Jak zarządzać bazą danych Rails.yml

Jaki jest najlepszy sposób obsługi bazy danych Rails.yml, Jeśli nad projektem pracuje Wiele osób, a lokalizacje baz danych są różne(w szczególności Gniazdo).

Author: Ryan Bigg, 2009-09-20

5 answers

Najpierw przenieś database.yml do pliku szablonu.

Jeśli jesteś na Git:
git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"

Lub, jeśli jesteś na Subversion:

svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"
Po drugie, zignoruj .wersja yml. Jeśli jesteś na Git:
cat > .gitignore
config/database.yml

git add .gitignore
git commit -m "ignored database.yml"

Jeśli jesteś na Subversion:

svn propset svn:ignore config "database.yml"

Po Trzecie, zainstaluj gdzie jest twoja baza danych.yml, koleś?:

script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude

Ta wtyczka ostrzega deweloperów przed uruchomieniem jakichkolwiek zadań Rake, jeśli nie utworzyli własnej lokalnej wersji config/database.yml.

Czwarty, ustawiony a Capistrano deploy task:

# 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

Po piąte, prześlij wersję serwera bazy danych.yml:

scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml
 160
Author: James A. Rosen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-06 07:58:30

W Capistrano 3, zamiast dodawać nowe zadanie, możesz po prostu zrobić:

set :linked_files, %w{config/database.yml}
 16
Author: Martin Sommer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-11 17:17:30

Możesz użyć właściwości svn: ignore, aby zapobiec wersjonowaniu tego pliku.

Instrukcje tutaj.

 2
Author: Sam DeFabbia-Kane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-19 23:56:26

Yet another method that uses capistrano an ERb to prompt for the credentials during deployment.

Http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/

 2
Author: Paul Alexander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-02 20:47:19

Oprócz powyższych odpowiedzi napisałem zadanie podobne do "gdzie jest twoja baza danych.yml, koleś?", ale pozwalając 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 za pomocą Capistrano, sugerowałbym również użycie zmiennych środowiskowych dla poświadczeń:

password: <%= ENV['PROD_DATABASE_PASSWORD'] %>

Jest wiele przydatnych Narzędzia i sposoby do czy to dostępne wokół.

 0
Author: smugglerFlynn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-16 07:32:48