Was ist der beste Weg, um mit der Rails database.yml umzugehen, wenn mehrere Personen am Projekt arbeiten und die Datenbankspeicherorte unterschiedlich sind (insbesondere der Socket).
Was ist der beste Weg, um mit der Rails database.yml umzugehen, wenn mehrere Personen am Projekt arbeiten und die Datenbankspeicherorte unterschiedlich sind (insbesondere der Socket).
Antworten:
database.yml
zu einer Vorlagendatei.Wenn du auf Git bist:
git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"
Oder wenn Sie auf Subversion sind:
svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"
Wenn du auf Git bist:
cat > .gitignore
config/database.yml
git add .gitignore
git commit -m "ignored database.yml"
Wenn Sie auf Subversion sind:
svn propset svn:ignore config "database.yml"
script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude
Dieses Plugin warnt Entwickler, bevor Rake-Aufgaben ausgeführt werden, wenn sie keine eigene lokale Version von erstellt haben 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
stattdessen zu verwenden. Da Sie sonst Ihre vorhandene Datei
In Capistrano 3 können Sie anstelle der neuen Aufgabe einfach Folgendes tun:
set :linked_files, %w{config/database.yml}
Sie können die Eigenschaft svn: ignore verwenden, um zu verhindern, dass diese Datei versioniert wird.
Eine weitere Methode, bei der capistrano ein ERb verwendet, um während der Bereitstellung nach den Anmeldeinformationen zu fragen.
http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/
Zusätzlich zu den obigen Antworten habe ich eine Rake-Aufgabe geschrieben, die "Wo ist Ihre database.yml, Alter?" Ähnlich ist, aber es erlaubt, Vorlagenbeispiele für jede Konfigurationsdatei beizubehalten. Probieren Sie es aus: https://github.com/Velid/exemplify
Als Alternative zum Schreiben separater Produktionskonfigurationen und zum Verknüpfen dieser über Capistrano würde ich auch vorschlagen, Umgebungsvariablen für Ihre Anmeldeinformationen zu verwenden:
password: <%= ENV['PROD_DATABASE_PASSWORD'] %>
Es gibt viele praktische Tools und Möglichkeiten , dies zu tun.