Как управлять базой данных Rails.в формате YML


каков наилучший способ обработки базы данных Rails.yml, если над проектом работает несколько человек, а расположение базы данных различно (в частности, сокет).

5 82

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}

вы можете использовать свойство 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'] %>

много удобная инструменты и способы чтобы сделать это доступно вокруг.