Який найкращий спосіб обробляти Rails database.yml, якщо над проектом працює кілька людей, а розташування бази даних різне (зокрема, сокет).
Який найкращий спосіб обробляти Rails database.yml, якщо над проектом працює кілька людей, а розташування бази даних різне (зокрема, сокет).
Відповіді:
database.yml
до файлу шаблону.Якщо ви на Git:
git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"
Або, якщо ви перебуваєте на Subversion:
svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"
Якщо ви на Git:
cat > .gitignore
config/database.yml
git add .gitignore
git commit -m "ignored database.yml"
Якщо ви перебуваєте на Subversion:
svn propset svn:ignore config "database.yml"
script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude
Цей плагін попереджає розробників перед запуском будь-яких завдань Rake, якщо вони не створили власну локальну версію config/database.yml
.
# 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
scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml
cat >> .gitignore
замість цього. Оскільки інакше ви
У Capistrano 3, замість того, щоб додавати нове завдання, ви можете просто зробити:
set :linked_files, %w{config/database.yml}
Ви можете використовувати властивість svn: ignore, щоб запобігти версії цього файлу.
Ще один метод, який використовує capistrano ERb для запиту облікових даних під час розгортання.
http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/
На додаток до наведених вище відповідей, я написав завдання на граблі, подібне до "Де твоя база даних.yml, чувак?", Але дозволяючи зберігати приклади шаблонів будь-якого конфігураційного файлу. Перевірте це: https://github.com/Velid/exemplify
Як альтернативу написанню окремих виробничих конфігурацій та зв’язуванню їх через Capistrano, я б також запропонував використовувати змінні середовища для своїх облікових даних:
password: <%= ENV['PROD_DATABASE_PASSWORD'] %>
Є багато зручних інструментів та способів зробити це навколо.