Sha256: 162557a2a5f1750cfbc13c8e7a5e60ebbde9d2b37ab3acf03e265edfc3187266

Contents?: true

Size: 1.4 KB

Versions: 1

Compression:

Stored size: 1.4 KB

Contents

module Merb
  module RelaxDB
    
    class << self
      
      def config_file() Merb.dir_for(:config) / "couchdb.yml" end
      def sample_dest() Merb.dir_for(:config) / "couchdb.yml.sample" end
      def sample_source() File.dirname(__FILE__) / "couchdb.yml.sample" end
      
      def connect
        begin
          configure_db
          Merb.logger.info "RelaxDB: #{::RelaxDB.db.uri}/_design/#{::RelaxDB.dd}"
        rescue => e
          uri = ::RelaxDB.db ? ::RelaxDB.db.uri : "<initialisation error>"
          Merb.logger.fatal "RelaxDB could not connect to CouchDB at #{uri} \n\tRoot cause:#{e}\n#{e.backtrace.join("\n")}"
          exit(1)
        end
      end
      
      def configure_db
        if File.exists?(config_file)        
          full_config = Erubis.load_yaml_file(config_file)
          config = full_config[Merb.environment.to_sym]
          config[:logger] = Merb.logger
          ::RelaxDB.configure(config)
          ::RelaxDB.db.name = config[:db]
        else
          copy_sample_config
          Merb.logger.error! "No couchdb.yml file found in #{Merb.root}/config."
          Merb.logger.error! "A sample file was created called couchdb.yml.sample for you to copy and edit."
          exit(1)
        end          
      end

      def copy_sample_config
        FileUtils.cp sample_source, sample_dest unless File.exists?(sample_dest)
      end
                  
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
merb_relaxdb-1.11 lib/merb_relaxdb/connection.rb