10: def self.connect
11:
12:
13: return if ActiveRecord::Base.connected?
14:
15: Puppet.settings.use(:main, :rails, :master)
16:
17: ActiveRecord::Base.logger = Logger.new(Puppet[:railslog])
18: begin
19: loglevel = Logger.const_get(Puppet[:rails_loglevel].upcase)
20: ActiveRecord::Base.logger.level = loglevel
21: rescue => detail
22: Puppet.warning "'#{Puppet[:rails_loglevel]}' is not a valid Rails log level; using debug"
23: ActiveRecord::Base.logger.level = Logger::DEBUG
24: end
25:
26:
27: ActiveRecord::Base.allow_concurrency = true if Puppet::Util.activerecord_version < 2.2
28:
29: ActiveRecord::Base.verify_active_connections!
30:
31: begin
32: args = database_arguments
33: Puppet.info "Connecting to #{args[:adapter]} database: #{args[:database]}"
34: ActiveRecord::Base.establish_connection(args)
35: rescue => detail
36: puts detail.backtrace if Puppet[:trace]
37: raise Puppet::Error, "Could not connect to database: #{detail}"
38: end
39: end