# File lib/puppet/rails.rb, line 10
10:   def self.connect
11:     # This global init does not work for testing, because we remove
12:     # the state dir on every test.
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:     # As of ActiveRecord 2.2 allow_concurrency has been deprecated and no longer has any effect.
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