This is a list of ruby pearls and gems, that help me in my daily routine coding tasks.
1. Retain only unique elements in an array:
2. Command line options parsing:
3. Delete a key-value pair in the hash map, where the key matches certain condition:
Certainly, you can use regular expression based matching for the condition or a custom function, say, on the 'key' value.
4. Interacting with mysql. I use mysql2 gem. Check out the documentation, it is pretty self-evident.
5. Working with Apache SOLR: rsolr and rsolr-ext are invaluable here:
1. Retain only unique elements in an array:
a = [1, 1, 2, 3, 4, 4, 5] a = a.uniq # => [1, 2, 3, 4, 5]
2. Command line options parsing:
require 'optparse'
class Optparser
def self.parse(args)
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
options[:verbose] = v
end
opts.on("-o", "--require OUTPUTDIR", "Output directory") do |o|
options[:output_dir] = o
end
options[:source_dir] = []
opts.on("-s", "--require SOURCEDIR", "Source directory") do |s|
options[:source_dir] << s
end
end.parse!
options
end
end
options = Optparser.parse(ARGV) #pp options When executed with -h, this script will automatically show the options and exit.
3. Delete a key-value pair in the hash map, where the key matches certain condition:
hashMap.delete_if {|key, value| key == "someString" }
Certainly, you can use regular expression based matching for the condition or a custom function, say, on the 'key' value.
4. Interacting with mysql. I use mysql2 gem. Check out the documentation, it is pretty self-evident.
5. Working with Apache SOLR: rsolr and rsolr-ext are invaluable here:
require 'rsolr'
require 'rsolr-ext'
solrServer = RSolr::Ext.connect :url => $solrServerUrl, :read_timeout => $read_timeout, :open_timeout => $open_timeout
doc = {field1=>"value1", "field2"=>"value2"}
solrServer.add doc
solrServer.commit(:commit_attributes => {:waitSearcher=>false, :softCommit=>false, :expungeDeletes=>true})
solrServer.optimize(:optimize_attributes => {:maxSegments=>1}) # single segment as output

No comments:
Post a Comment