Rails database.yml nasıl yönetilir


82

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?


2
Açıklama: Bunun, svn'den kontrol edilen Capistrano ile çalışmasını istiyorum, bu yüzden işleri görmezden gelmeyi düşünmüyorum.
phillee

1
Capistrano davası için iki adım daha ekledim.
James A. Rosen

Yanıtlar:


160

İlk 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"

İkinci olarak, .yml sürümünü yok sayın.

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"

Üçüncü olarak, database.yml'iniz nerede, dostum? :

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.

Dördüncü olarak, bir Capistrano dağıtım görevi oluşturun:

# 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

Beşinci olarak, sunucunun database.yml sürümünü yükleyin:

scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml

8
En yararlı bulduğunuz yanıtı "kabul etmek" gelenekseldir (hiçbir şekilde gerekli değildir). İlk kabulünüz için bir rozet bile kazandığınızı düşünüyorum.
James A. Rosen

3
benim hatam - oy verdi ama çeki görmedi. bitti ve teşekkür ederim!
phillee

"Deploy: update_code", "deploy: symlink_db" sonrasında "deploy: assets: precompile", "deploy: symlink_db" den önce değiştirmek zorunda kaldım ve sonra çalıştı.
joshua.paling

Beşinci adım dışında her şey çalışıyor. Böyle bir dizin olmadığını söylüyor, ama orada.
Sebastialonso

Sadece önemli bir not, cat >> .gitignorebunun yerine kullanmanızı öneririm . Aksi takdirde Mevcut dosyayı uzakta darbe olacak beri ...
sijpkes

16

Capistrano 3'te yeni görevi eklemek yerine şunları yapabilirsiniz:

set :linked_files, %w{config/database.yml}



0

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.