lib/couch_potato.rb in couch_potato-0.6.0 vs lib/couch_potato.rb in couch_potato-0.7.0.pre.1

- old
+ new

@@ -5,13 +5,13 @@ require 'ostruct' JSON.create_id = 'ruby_class' module CouchPotato - Config = Struct.new(:database_name, :validation_framework, :split_design_documents_per_view).new - Config.validation_framework = :active_model + Config = Struct.new(:database_name, :split_design_documents_per_view, :default_language).new Config.split_design_documents_per_view = false + Config.default_language = :javascript class NotFound < StandardError; end # returns all the classes that implement the CouchPotato::Persistence module def self.models @@ -27,27 +27,42 @@ # 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) 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 + # end + # + def self.with_database(database_name) + @@__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. + def self.couchrest_database_for_name(database_name) + CouchRest.database(full_url_to_database(database_name)) + end + private - def self.full_url_to_database - raise('No Database configured. Set CouchPotato::Config.database_name') unless CouchPotato::Config.database_name - if CouchPotato::Config.database_name.match(%r{https?://}) - CouchPotato::Config.database_name + def self.full_url_to_database(database_name=CouchPotato::Config.database_name) + 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/#{CouchPotato::Config.database_name}" + "http://127.0.0.1:5984/#{database_name}" end end end $LOAD_PATH << File.dirname(__FILE__) -require 'core_ext/object' require 'core_ext/time' require 'core_ext/date' -require 'core_ext/string' -require 'core_ext/symbol' require 'couch_potato/validation' require 'couch_potato/persistence' require 'couch_potato/railtie' if defined?(Rails)