Using interpolated YML and a little logic you can clean up your Rails Database.yml file.
The default Rails Database.yml file.
# SQLite version 3.x # gem install sqlite3 # # Ensure the SQLite 3 gem is defined in your Gemfile # gem 'sqlite3' development: adapter: mysql2 database: appname_development username: root pool: 5 timeout: 5000 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: adapter: mysql2 database: appname_test username: root pool: 5 timeout: 5000
Here is a cleaner version
login: &login username: root password: defaults: &defaults pool: 2 wait_time: 5 reconnect: true encoding: UTF8 <% sock = ["/tmp/mysqld.sock", "/tmp/mysql.sock", "/var/run/mysqld/mysqld.sock", "/var/lib/mysql/mysql.sock"].detect do |socket| File.exist?(socket) end %> <%= Rails.env %>: &<%= Rails.env %>_base adapter: mysql database: appname_<%= Rails.env %> socket: <%= sock %> <<: *defaults <<: *login
A bit contrived, but as Database.yml becomes more robust and uses mysql you can see how the later will scale. This is especially helpful when you have many environments like a distributed setup on EC2 with many development teams.