Jaki jest najlepszy sposób obsługi pliku database.yml w Railsach, jeśli nad projektem pracuje wiele osób, a lokalizacje bazy danych są różne (w szczególności gniazdo).
Jaki jest najlepszy sposób obsługi pliku database.yml w Railsach, jeśli nad projektem pracuje wiele osób, a lokalizacje bazy danych są różne (w szczególności gniazdo).
Odpowiedzi:
database.yml
do pliku szablonu.Jeśli korzystasz z Git:
git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"
Lub, jeśli korzystasz z Subversion:
svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"
Jeśli korzystasz z Git:
cat > .gitignore
config/database.yml
git add .gitignore
git commit -m "ignored database.yml"
Jeśli korzystasz z Subversion:
svn propset svn:ignore config "database.yml"
script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude
Ta wtyczka ostrzega programistów przed uruchomieniem jakichkolwiek zadań Rake, jeśli nie utworzyli własnej lokalnej wersji 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
zamiast tego. Ponieważ w przeciwnym razie
W Capistrano 3 zamiast dodawać nowe zadanie, możesz po prostu wykonać:
set :linked_files, %w{config/database.yml}
Możesz użyć właściwości svn: ignore, aby zapobiec wersjonowaniu tego pliku.
Jeszcze inna metoda, która wykorzystuje Capistrano i ERb do monitowania o poświadczenia podczas wdrażania.
http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/
Oprócz powyższych odpowiedzi, napisałem zadanie rake podobne do „Where's your database.yml, dude?”, Ale pozwalające zachować przykłady szablonów dowolnego pliku konfiguracyjnego. Sprawdź to: https://github.com/Velid/exemplify
Jako alternatywę dla pisania oddzielnych konfiguracji produkcyjnych i łączenia ich przez Capistrano, sugerowałbym również użycie zmiennych środowiskowych dla twoich poświadczeń:
password: <%= ENV['PROD_DATABASE_PASSWORD'] %>
Istnieje wiele przydatnych narzędzi i sposobów, aby to zrobić.