Как управлять базой данных Rails.в формате YML
каков наилучший способ обработки базы данных Rails.yml, если над проектом работает несколько человек, а расположение базы данных различно (в частности, сокет).
5 ответов:
во-первых, двигаться
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"
в-третьих, установить где ваша база данных.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
в-пятых, загрузите версию сервера базы данных.yml:
scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml
в Capistrano 3, вместо добавления новой задачи, вы можете просто сделать:
set :linked_files, %w{config/database.yml}
еще один метод, который использует 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'] %>
много удобная инструменты и способы чтобы сделать это доступно вокруг.