lib/couch_potato.rb in couch_potato-1.1.1 vs lib/couch_potato.rb in couch_potato-1.1.2

- old
+ new

@@ -6,18 +6,19 @@ JSON.create_id = 'ruby_class' CouchRest.decode_json_objects = true module CouchPotato - Config = Struct.new(:database_name, :split_design_documents_per_view, :default_language).new + Config = Struct.new(:database_host, :database_name, :split_design_documents_per_view, :default_language).new Config.split_design_documents_per_view = false Config.default_language = :javascript + Config.database_host = "http://127.0.0.1:5984" class NotFound < StandardError; end class Conflict < StandardError; end - # returns all the classes that implement the CouchPotato::Persistence module + # returns all the classes that include the CouchPotato::Persistence module def self.models @models ||= [] @models end @@ -26,13 +27,20 @@ @@__database ||= Database.new(self.couchrest_database) end # Returns the underlying CouchRest database object if you want low level access to your CouchDB. You have to set the CouchPotato::Config.database_name before this works. def self.couchrest_database - @@__couchrest_database ||= CouchRest.database(full_url_to_database) + @@__couchrest_database ||= CouchRest.database(full_url_to_database(CouchPotato::Config.database_name, CouchPotato::Config.database_host)) end + # Returns a specific database instance + def self.use(database_name) + @@__databases ||= {} + @@__databases["#{database_name}"] = Database.new(couchrest_database_for_name!(database_name)) unless @@__databases["#{database_name}"] + @@__databases["#{database_name}"] + end + # Executes a block of code and yields a datbase with the given name. # # example: # CouchPotato.with_database('couch_customer') do |couch| # couch.save @customer @@ -42,22 +50,27 @@ @@__databases ||= {} @@__databases["#{database_name}"] = Database.new(couchrest_database_for_name(database_name)) unless @@__databases["#{database_name}"] yield(@@__databases["#{database_name}"]) end - # Creates a CouchRest-Database for directly accessing that functionality. + # Returns a CouchRest-Database for directly accessing that functionality. def self.couchrest_database_for_name(database_name) - CouchRest.database(full_url_to_database(database_name)) + CouchRest.database(full_url_to_database(database_name, CouchPotato::Config.database_host)) end + # Creates a CouchRest-Database for directly accessing that functionality. + def self.couchrest_database_for_name!(database_name) + CouchRest.database!(full_url_to_database(database_name)) + end + private - def self.full_url_to_database(database_name=CouchPotato::Config.database_name) + def self.full_url_to_database(database_name=CouchPotato::Config.database_name, database_host = CouchPotato::Config.database_host) raise('No Database configured. Set CouchPotato::Config.database_name') unless database_name if database_name.match(%r{https?://}) database_name else - "http://127.0.0.1:5984/#{database_name}" + "#{database_host}/#{database_name}" end end end $LOAD_PATH << File.dirname(__FILE__)