Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to manage Rails database.yml

What's the best way to handle the Rails database.yml if multiple people are working on the project and database locations are different (the socket in particular).

like image 786
phillee Avatar asked Sep 19 '09 23:09

phillee


People also ask

Where is the database yml file in Rails?

When deploying, the convention is to create this database. yml file in /shared/config directly on the server.

What database does Rails use?

Rails defaults to using a SQLite database when creating a new project, but you can always change it later.


1 Answers

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 
like image 196
James A. Rosen Avatar answered Oct 20 '22 09:10

James A. Rosen