Skip to content

Latest commit

 

History

History
45 lines (37 loc) · 1.42 KB

inspect-configuration-of-database-connection.md

File metadata and controls

45 lines (37 loc) · 1.42 KB

Inspect Configuration Of Database Connection

There are a lot of factors that can effect the database configuration values.

  • What are the settings in each environment in config/database.yml?
  • Is there any dynamic ERB code in config/database.yml?
  • Is DATABASE_URL set in the current environment?
  • Is any other code overriding these settings?

To check the current configuration hash for the database connection at runtime, we can run the following statement:

> ActiveRecord::Base.connection.pool.db_config.configuration_hash
=>
{:adapter=>"postgresql",
 :encoding=>"unicode",
 :host=>"::1",
 :user=>"postgres",
 :password=>"postgres",
 :pool=>5,
 :database=>"still_development",
 :port=>9875}

In this case, I'm running the statement from the Rails console of my app's development environment.

I could even access and print these values as part of debugging in a production environment with a rake task:

# In lib/tasks/debug.rake
namespace :debug do
  task :db_config => :environment do
    puts "==== Database Configuration Debug ===="
    puts "DATABASE_URL: #{ENV['DATABASE_URL']}"
    puts "Active Record Config: #{ActiveRecord::Base.connection.pool.db_config.configuration_hash}"
    puts "Raw ENV dump:"
    ENV.sort.each { |k,v| puts "#{k}: #{v}" if k.include?('DB') || k.include?('DATABASE') }
  end
end

source