How to manage Rails database.yml

匿名 (未验证) 提交于 2019-12-03 01:58:03

问题:

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).

回答1:

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


回答2:

In Capistrano 3, instead of adding the new task, you can just do:

set :linked_files, %w{config/database.yml}


回答3:

You can use the svn:ignore property to prevent that file from being versioned.

Instructions here.



回答4:

Yet another method that uses capistrano an ERb to prompt for the credentials during deployment.

http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/



回答5:

In addition to above answers, I wrote a rake task similar to "Where's your database.yml, dude?", but allowing to keep template examples of any configuration file. Check it out: https://github.com/Velid/exemplify

As an alternative to writing separate production configs and linking them via Capistrano, I would also suggest using environment variables for your credentials:

password: <%= ENV['PROD_DATABASE_PASSWORD'] %>

There are a lot of handy tools and ways to do this available around.



转载请标明出处:How to manage Rails database.yml
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!