lib/picky/sources/couch.rb in picky-2.7.0 vs lib/picky/sources/couch.rb in picky-3.0.0.pre1

- old
+ new

@@ -1,72 +1,76 @@ -module Sources +module Picky - # Raised when a Couch source is instantiated without a file. - # - # Example: - # Sources::Couch.new(:column1, :column2) # without file option - # - class NoCouchDBGiven < StandardError; end + module Sources - # A Couch database source. - # - # Options: - # * url - # and all the options of a <tt>RestClient::Resource</tt>. - # See http://github.com/archiloque/rest-client. - # - # Examples: - # Sources::Couch.new(:title, :author, :isbn, url:'localhost:5984') - # Sources::Couch.new(:title, :author, :isbn, url:'localhost:5984', user:'someuser', password:'somepassword') - # - class Couch < Base - + # A Couch database source. # + # Options: + # * url + # and all the options of a <tt>RestClient::Resource</tt>. + # See http://github.com/archiloque/rest-client. # - def initialize *category_names, options - check_gem + # Examples: + # Picky::Sources::Couch.new(:title, :author, :isbn, url:'localhost:5984') + # Picky::Sources::Couch.new(:title, :author, :isbn, url:'localhost:5984', user:'someuser', password:'somepassword') + # + class Couch < Base - Hash === options && options[:url] || raise_no_db_given(category_names) + # Raised when a Couch source is instantiated without a file. + # + # Example: + # Picky::Sources::Couch.new(:column1, :column2) # without file option + # + class NoDBGiven < StandardError; end - @db = RestClient::Resource.new options.delete(:url), options + # + # + def initialize *category_names, options + check_gem - key_format = options.delete :key_format - @key_format = key_format && key_format.to_sym || :to_sym - end + Hash === options && options[:url] || raise_no_db_given(category_names) - def to_s - self.class.name - end + @db = RestClient::Resource.new options.delete(:url), options - # Tries to require the rest_client gem. - # - def check_gem # :nodoc: - require 'rest_client' - rescue LoadError - warn_gem_missing 'rest-client', 'the CouchDB source' - exit 1 - end + key_format = options.delete :key_format + @key_format = key_format && key_format.to_sym || :to_sym + end - # Harvests the data to index. - # - # See important note, above. - # - @@id_key = '_id' - def harvest category - category_name = category.from.to_s - get_data do |doc| - yield doc[@@id_key], doc[category_name] || next + def to_s + self.class.name end - end - def get_data &block # :nodoc: - resp = @db['_all_docs?include_docs=true'].get - JSON.parse(resp)['rows']. - map{|row| row['doc']}. - each &block - end + # Tries to require the rest_client gem. + # + def check_gem # :nodoc: + require 'rest_client' + rescue LoadError + warn_gem_missing 'rest-client', 'the CouchDB source' + exit 1 + end - def raise_no_db_given category_names # :nodoc: - raise NoCouchDBGiven.new(category_names.join(', ')) + # Harvests the data to index. + # + # See important note, above. + # + @@id_key = '_id' + def harvest category + category_name = category.from.to_s + get_data do |doc| + yield doc[@@id_key], doc[category_name] || next + end + end + + def get_data &block # :nodoc: + resp = @db['_all_docs?include_docs=true'].get + JSON.parse(resp)['rows']. + map{|row| row['doc']}. + each &block + end + + def raise_no_db_given category_names # :nodoc: + raise NoDBGiven.new(category_names.join(', ')) + end end end -end + +end \ No newline at end of file