module RackWarden::Model
Public Class Methods
get_database_config()
click to toggle source
Best guess at framework database settings.
# File lib/rack_warden/models.rb, line 60 def self.get_database_config #App.logger.debug ActiveRecord::Base.configurations[(RackWarden::App.environment || :development).to_s].to_yaml conf = case when App.database_config.to_s.downcase == 'memory'; "sqlite3::memory:?cache=shared" when App.database_config.to_s.downcase == 'file'; "sqlite3:///#{Dir.pwd}/rack_warden.sqlite3.db" when App.database_config.to_s.downcase == 'auto'; (ActiveRecord::Base.connection_config rescue nil) || (ActiveRecord::Base.configurations rescue nil) || #(DataMapper.repository(App.repository_name).adapter[:options] rescue nil) || App.database_default when App.database_config; App.database_config else App.database_default end #... sort out environment HERE rslt = conf[(RackWarden::App.environment || :development).to_s] || conf rslt[:adapter] = 'mysql' if rslt && [:adapter]=='mysql2' App.logger.debug "RW get_database_config rslt: #{rslt.inspect}" return rslt end
initialize_models()
click to toggle source
Load models, setup database adapter, setup db repository.
# File lib/rack_warden/models.rb, line 20 def self.initialize_models # Select existing datamapper repository, create a new one, or create a default. begin DataMapper.repository(App.repository_name).adapter if not App.database_config.to_s.downcase[/auto|existing/] App.repository_name = :rack_warden DataMapper.setup(App.repository_name, get_database_config) end rescue DataMapper::RepositoryNotSetupError DataMapper.setup(App.repository_name, get_database_config) end # Careful! This could expose sensitive db login info in the log files. App.logger.debug "RW selected DataMapper repository #{DataMapper.repository(App.repository_name).adapter.inspect}" # Careful! This could expose sensitive db login info in the log files. App.logger.warn "RW using DataMapper repository #{DataMapper.repository(App.repository_name).adapter.options.dup.tap{|o| o.delete(:password); o.delete('password')}.inspect}" App.logger.warn "RW DataMapper logging to #{DataMapper.logger.log} (level #{DataMapper.logger.level})" # Load all models. App.logger.debug "RW requiring model files in #{File.join(File.dirname(__FILE__), 'models/*')}" Dir.glob(File.join(File.dirname(__FILE__), 'models/*')).each {|f| require f} # DataMapper finalize App.logger.debug "RW DataMapper.finalize" # Tell DataMapper the models are done being defined DataMapper.finalize # DataMapper auto upgrade. App.logger.warn "RW User.auto_upgrade!" # Update the database to match the properties of User. #DataMapper.auto_upgrade! User.auto_upgrade! end