How to manage Rails database.yml

First, move database.yml to a template file.

If you’re on Git:

git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"

Or, if you’re on Subversion:

svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"

Second, ignore the .yml version.

If you’re on Git:

cat > .gitignore
config/database.yml

git add .gitignore
git commit -m "ignored database.yml"

If you’re on Subversion:

svn propset svn:ignore config "database.yml"

Third, install Where’s your database.yml, dude?:

script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude

That plugin alerts developers before any Rake tasks are run if they haven’t created their own local version of config/database.yml.

Fourth, set up a Capistrano deploy task:

# in RAILS_ROOT/config/deploy.rb:
after 'deploy:update_code', 'deploy:symlink_db'

namespace :deploy do
  desc "Symlinks the database.yml"
  task :symlink_db, :roles => :app do
    run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
  end
end

Fifth, upload the server’s version of database.yml:

scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)