# File lib/merb_datamapper/connection.rb, line 19 19: def config 20: @config ||= Merb::Plugins.config[:merb_datamapper][:connection] ||= (get_config_for_environment) 21: end
# File lib/merb_datamapper/connection.rb, line 7 7: def config_file() Merb.dir_for(:config) / "database.yml" end
Database connects as soon as the gem is loaded
# File lib/merb_datamapper/connection.rb, line 24 24: def connect 25: if File.exists?(config_file) 26: start_logging 27: setup_connections 28: else 29: copy_sample_config 30: Merb.logger.error! "No database.yml file found in #{Merb.root}/config." 31: Merb.logger.error! "A sample file was created called database.sample.yml for you to copy and edit." 32: exit(1) 33: end 34: end
# File lib/merb_datamapper/connection.rb, line 11 11: def copy_sample_config 12: FileUtils.cp sample_source, sample_dest unless File.exists?(sample_dest) 13: end
# File lib/merb_datamapper/connection.rb, line 15 15: def full_config 16: @full_config ||= Erubis.load_yaml_file(config_file) 17: end
Registering this ORM lets the user choose DataMapper as a session store in merb.yml’s session_store: option.
# File lib/merb_datamapper/connection.rb, line 50 50: def register_session_type 51: Merb.register_session_type("datamapper", 52: "merb/session/data_mapper_session", 53: "Using DataMapper database sessions") 54: end
# File lib/merb_datamapper/connection.rb, line 8 8: def sample_dest() Merb.dir_for(:config) / "database.yml.sample" end
# File lib/merb_datamapper/connection.rb, line 9 9: def sample_source() File.dirname(__FILE__) / "database.yml.sample" end
# File lib/merb_datamapper/connection.rb, line 41 41: def setup_connections 42: conf = config.dup 43: repositories = conf.delete(:repositories) 44: ::DataMapper.setup(:default, conf) unless conf.empty? 45: repositories.each { |name, opts| ::DataMapper.setup(name, opts) } if repositories 46: end
# File lib/merb_datamapper/connection.rb, line 36 36: def start_logging 37: ::DataMapper.logger = Merb.logger 38: ::DataMapper.logger.info("Connecting to database...") 39: end
# File lib/merb_datamapper/connection.rb, line 56 56: def symbolize_keys(h) 57: config = {} 58: 59: h.each do |k, v| 60: if k == 'port' 61: config[k.to_sym] = v.to_i 62: elsif k == 'adapter' && v == 'postgresql' 63: config[k.to_sym] = 'postgres' 64: elsif v.is_a?(Hash) 65: config[k.to_sym] = symbolize_keys(v) 66: else 67: config[k.to_sym] = v 68: end 69: end 70: 71: config 72: end
# File lib/merb_datamapper/connection.rb, line 76 76: def get_config_for_environment 77: if hash = full_config[Merb.environment] 78: symbolize_keys(hash) 79: elsif hash = full_config[Merb.environment.to_sym] 80: hash 81: else 82: raise ArgumentError, "missing environment '#{Merb.environment}' in config file #{config_file}" 83: end 84: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.