Soru database.yml dağıtım en iyi uygulama


Database.yml dosyasını kaynak kontrolüne kontrol etmiyorum ve başkalarının ne zaman dağıtımı yaparken bu dosyayı sunucuya kopyalamak için ne yaptıklarını merak ettim.

Dağıtım için Capistrano kullanıyorum.


21
2018-04-26 01:53


Menşei




Cevaplar:


Şu anda, deply_to dir'lerimin dışında paylaşılan bir paylaşılan klasörü saklıyorum. Ben database.yml ve diğer config dosyalarımı orada saklıyorum ve dağıtım sırasında üzerinde cp yapmak için bir kanca var. İşte kopya yapmak için benim basit kap görevim:

after "deploy:update_code","deploy:config_symlink"

namespace :deploy do

  task :config_symlink do
    run "cp #{shared_path}/../../shared/database.yml #{release_path}/config/database.yml"
  end
end

16
2018-04-26 02:13



Bu oldukça yaygındır ve bazı üretim şifrelerini kaynak kontrolden uzak tutabilir. Yine de neden paylaşımlı dosyadan çıktığını bilmiyorum. Ve ben cp yerine tercih ederim. - Austin Taylor
Paylaşılan, deploy_dir düzeyinde olduğu için paylaşılmam. Genellikle, aynı yapılandırmayı kullanan beta ve prod gibi uygulamanın çoklu yüklemelerini kullanıyorum. Yalnızca bir dağıtımınız varsa, yah, yalnızca dağıtım hedefinin shared_path yönünü kullanabilirsiniz. - Jake Dempsey
@JakeDempsey Ve nasıl farklılıklar yükleme uygulaması farklı yapılandırma dosyaları varsa bunu nasıl? - montells
Wooooohooo çalışıyor. - Erwin Rooijakkers


Dağıtım komutum kullanılarak kırılıyordu after "deploy:update_code" kanca çünkü bu adım zaten DB'ye erişmeye çalışıyor gibi görünüyordu. Yani ben yaparım:

before "deploy:assets:precompile", 'deploy:symlink_shared'

namespace :deploy do

  task :symlink_shared do
    run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
  end
end

9
2018-03-28 18:02





Kafamı bir süreliğine bunun üzerine yendim ve daha kolay bir çözüm buldum. Capistrano 3. Umarım buradakilere yardım eder.

Deploy.rb dosyamda çalışmak için "run" veya "execute" komutlarını alıp kullanamadım. Ortaya çıktığında Capistrano 3, deployment_directory / shared klasörünün altına database.yml koymalısınız. Daha sonra, deployment.rb dosyanızda, dosyayı linked_files değişkenine ekleyin ve dağıtım sırasında otomatik olarak aynı yola sembolik olarak bağlanır.

İşte bir örnek:

Yeni başlayanlar için, veritabanı kontrolüne sahip değilim. Database.yml, üretim sunucusunda şu konumda bulunuyor:

var / www / myapp / paylaşılan / config / database.yml

Deployment.rb adresinde bu satırı ekledim

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

Dağıtım sırasında, capistrano otomatik olarak dosyayı şu şekilde yedekler:

var / www / myapp / akım / config / database.yml

Umarım bu, başkalarına yardım eder. Bugün kafamı duvara çarptı.


4
2018-03-11 21:27