Каков наилучший способ обработки Rails database.yml, если несколько человек работают над проектом, а расположение базы данных отличается (в частности, сокет).
Как управлять Rails database.yml
Ответ 1
Сначала переместите 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"
Во-вторых, игнорируйте версию .yml.
Если вы находитесь на Git:
cat > .gitignore
config/database.yml
git add .gitignore
git commit -m "ignored database.yml"
Если вы находитесь в Subversion:
svn propset svn:ignore config "database.yml"
В-третьих, установите Где ваша database.yml, чувак?:
script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude
Этот плагин предупреждает разработчиков перед запуском любых задач Rake, если они не создали собственную локальную версию config/database.yml
.
В-четвертых, настройте задачу развертывания Capistrano:
# 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
В-пятых, загрузите версию сервера database.yml:
scp config/database.yml [email protected]_server.com:/path_to_rails_app/shared/config/database.yml
Ответ 2
В Capistrano 3 вместо добавления новой задачи вы можете просто сделать:
set :linked_files, %w{config/database.yml}
Ответ 3
Вы можете использовать свойство svn: ignore, чтобы этот файл не был версией.
Ответ 4
Еще один метод, который использует capistrano ERb для запроса учетных данных во время развертывания.
http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/
Ответ 5
В дополнение к вышеприведенным ответам, я написал задачу рейка, подобную "Где ваш database.yml, чувак?", но позволяющий хранить примеры шаблонов любого файла конфигурации. Проверьте это: https://github.com/Velid/exemplify
В качестве альтернативы написанию отдельных производственных конфигураций и их связыванию через Capistrano, я бы также предложил использовать переменные среды для ваших учетных данных:
password: <%= ENV['PROD_DATABASE_PASSWORD'] %>
Существует много инструменты и способы, чтобы сделать это доступным.