2012-07-04 21 views
18

Ben Heroku üzerinde Rails kullanılarak zevk ve xyz.yml için bir değişiklik işlemek ve yeniden dağıtım zorunda kalmadan bir Heroku app yapılandırma özelliğini ayarlayabilirsiniz böyle ettik.yönetme yapılandırma

Tamamen benim Raylar app uzakta Yaml yapılandırma dosyaları ile yapmak güzel ve ENV yapılandırmayı depolama özelliğini mümkün olduğunca itimat ediyorum. Bu, 12-factor config ilkesi ile birlikte gider.

Ancak, Heroku/12 faktörlü tabanlı birine Yaml tabanlı yapılandırma yönetimi geçiş bazı takaslar vardır. o dağıtımları (qa, sahne, eşya, dev, demo, laboratuvarlar) bir çoğalma Yaml dosyaların bir çoğalmasına yol açabilir doğru olsa

  • , yeni bir yapılandırma profili oluşturmak için kopyalayıp yapıştırmak çok kolaydır. Yapılandırma profillerini Heroku'daki bir dağıtımdan diğerine kopyalamak için bir yol göremiyorum. repo'da
  • saklanması yapılandırma verileri Heroku durumunda, dağıtma ve yapılandırma ve uygulama tek bir işlemde gerçekleştirilir, olduğu anlamına gelir. Yapılandırmamı Yaml dosyalarından ve ENV değişkenlerine taşıyacak olsaydım, uygulamanızı dağıtımdan sonra ayrı bir adımda yapılandırmam gerekirdi.

Özel uygulamalarında 12 faktörlü stil yapılandırması kullanmış olan kişilerden ve çok sayıda yapılandırma değişkeninde birçok yapılandırma değişkenini nasıl yönettiklerini öğrenmek isteriz. Hızlı bir şekilde yeni dağıtımı yapılandırmak nasıl

  • ?
  • Yetkili olmayan yapılandırma değişkenleri kaynağınızı, repo değil ise nerede saklıyorsunuz? Bunu geliştiriciler arasında nasıl dağıtıyorsunuz?

teşekkürler! Genellikle kullanmak ne

cevap

4

: info V99 ve ardından set Heroku yapılandırma: set k = v --app

Ama a ise problem/ağrı/sürtünme belki de env var yapılandırmanızın içinde çok fazla var.

+1

Heroku ile çalışmıyorum, ancak herhangi bir SaaS uygulamasına 12 faktörün uygulanabileceğini düşünüyorum. Ortamımda bu yapılandırmayı oluşturmak için özel bir kabuk komut dosyası oluşturabilirim. Ancak, bu arka plandan sonra, sorum şu: veritabanı erişim 'verileri gibi yapılandırma değişkenlerimin env vars haline getirilmesinde güvenlik sorunu yok mu? –

10

Yaml ENV kullanarak ve varsayılan sağlamaktır. Örneğin, YAML sizin ENV içerecek şekilde mutlu ERB'ed edilebilir vars: yaparak

YAML.load(ERB.new(File.read("#{Rails.root}/config/app_config.yml")).result) 

:

foo: 
    var: ENV["MY_CONFIG"] || "default_value" 

Biraz önce okuduğunda ERB ile yaml yük emin olmak gerek Bu kodunuz dev'de gayet iyi çalışır, fakat aynı zamanda ortamdaki konfigürasyon varyantlarını da ayarlamanıza izin verir.

Sen Heroku yapılandırma yoluyla mevcut değişkenleri yineleme ya Heroku bırakın bazı basit kabuk komut dosyaları ile nispeten kolay gerçekleştirebilirsiniz
0

Biraz geç cevap verdim, ama aradığın şeyin bu olduğuna inanıyorum.

Uygulamayı yapılandırmak için YAML dosyalarını kullanmanıza olanak tanıyan settei adlı bir taş geliştirdim. Ancak gem, YAML dosyasını, dağıtım sırasında bir ortam değişkeni olarak serileştirecektir. Bu şekilde, her iki dünyanın en iyisini elde edebilirsiniz: yönetim kolaylığı/türev ortam yaratmak için YAML ve 12 faktörlü uyum için ENV.