7

Uygulamamı Amazon S3 ve diğer hizmetlere bağlamak için kullanmam gereken birçok kimlik bilgim var.Çevresel değişkenleri yerel olarak nasıl tanımlar ve tanımlarını değiştiremez/onları kahramanlara itemez?

Heroku uygulamamı s3 ile çalıştırdım ve harika çalışıyor. Bu örnekten sonra s3 erişim bilgilerimi tanımladım: http://devcenter.heroku.com/articles/config-vars

Ancak, şimdi yerel geliştirme ortamımdan s3'e erişebilmeyi istiyorum. Açıkçası, heroku üzerinde tanımladığım yapılandırma, localhost'umda bulunmuyor. Bu anahtarları yerel olarak nasıl tanımlayabilirim? Ayrıca, özellikle güvenli bir çözüm için arıyorum (örneğin, anahtarlarımı bir intializer veya bir şeyde düz metin olarak tanımlarsam, o dosyanın heroku'ya itilmesini istemiyorum). paylaşılmayan istemiyorsanız arka plan için

, burada ben s3

has_attached_file :photo, 
:storage => :s3, 
:bucket => 'bucket_name', 
:s3_credentials => { 
    :access_key_id => ENV['S3_KEY'], 
    :secret_access_key => ENV['S3_SECRET'] 
} 

cevap

9

böyle şeyler tanımlamak için en iyi yer ile çalışan ataş almak için benim modeline eklemek budur, muhtemelen bir başlatıcı olduğunu .

# config/initializers/s3_constants.rb 


if Rails.env.development? 
    S3_KEY = "mys3key" 
    S3_SECRET = "mys3secret" 
end 

bu dosyayı olun

yüzden senin depo geri kalanı ile birlikte itilmiş olmayacak .gitignore eklenir.

Her bir ortam için farklılık gösteren sabitler, gerçekte, söz konusu ortam için dosyanın içinde olmalıdır (burada development.rb) ... ama bu dosyalar sürüm denetim sisteminize gerçekten eklenmelidir. ve kesinlikle, kesinlikle bu verileri gitgiden hariç tutmayı istiyorsanız, o zaman size vermediğiniz ayrı bir dosya muhtemelen en iyi bahistir.

+0

. Yine de, env'nin “üretim” olmadığını test etmeyi tercih ederim. Yani testinizde de çalışır. –

+0

Dosya göz ardı edilirse, üretim sunucusu env değişkenlerini nasıl bilir? Gitmiş olan dosyalar hala sunucuya aktarılıyor mu? – kibaekr

2

Sadece .bash_profile dosyanızdaki ortam değişkenlerini diğer ortam değişkenleri gibi tanımlayın. Belki de bölümü Rails-spesifik ortam değişkenleri olarak tanımlamak için bir yorum bırakın. ekleyin ve KEY = değer sağlayacak: Ayrıca

#~/.bash_profile 
# Rails constants 
S3_KEY="blady" 
S3_SECRET="bladybloo123" 

, belki

-2

Heroku Heroku yapılandırma sağlar ... Birden fazla s3 bağlantı tanımlanmış olabilir böylece daha özel bir şey için adını değiştirmek istiyor . bkz. Yapılandırma, bu kesinlikle bunu yapmanın en iyi yolu olan

İlgili konular