Proje üzerinde birden fazla kişi çalışıyorsa ve veritabanı konumları farklıysa (özellikle soket) Rails veritabanı.yml'yi kullanmanın en iyi yolu nedir?
Proje üzerinde birden fazla kişi çalışıyorsa ve veritabanı konumları farklıysa (özellikle soket) Rails veritabanı.yml'yi kullanmanın en iyi yolu nedir?
Yanıtlar:
database.yml
önce bir şablon dosyasına gidin.Git'teyseniz:
git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"
Veya Subversion kullanıyorsanız:
svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"
Git'teyseniz:
cat > .gitignore
config/database.yml
git add .gitignore
git commit -m "ignored database.yml"
Subversion kullanıyorsanız:
svn propset svn:ignore config "database.yml"
script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude
Bu eklenti, geliştiricileri kendi yerel sürümünü oluşturmamışlarsa herhangi bir Rake görevi çalıştırılmadan önce uyarır 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
bunun yerine kullanmanızı öneririm . Aksi takdirde Mevcut dosyayı uzakta darbe olacak beri ...
Capistrano 3'te yeni görevi eklemek yerine şunları yapabilirsiniz:
set :linked_files, %w{config/database.yml}
Bu dosyanın sürümünün değiştirilmesini önlemek için svn: ignore özelliğini kullanabilirsiniz.
Dağıtım sırasında kimlik bilgilerini istemek için capistrano ve ERb kullanan bir başka yöntem.
http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/
Yukarıdaki cevaplara ek olarak, "Database.yml, ahbap nerede?" Benzeri, ancak herhangi bir yapılandırma dosyasının şablon örneklerini tutmaya izin veren bir komisyon görevi yazdım. Kontrol edin: https://github.com/Velid/exemplify
Ayrı üretim yapılandırmaları yazmaya ve bunları Capistrano aracılığıyla bağlamaya bir alternatif olarak, kimlik bilgileriniz için ortam değişkenlerini kullanmanızı da öneririm:
password: <%= ENV['PROD_DATABASE_PASSWORD'] %>
Etrafta bunu yapmanın birçok kullanışlı aracı ve yolu vardır.