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__)