2013-03-28 22 views
5
task :some_task, :environment do |t, args| 
    puts Rails.env #=> development, production, etc 
    puts ENV #=> {} 
end 

Bazı ortam değişkenlerini (ya yerel bir .env aracılığıyla ya da Herokusan aracılığıyla Heroku Config aracılığıyla) ayarlıyorum. görev, ancak ENV boş bir karma. Çevreyle ilgili bir şey biliyorum :environment görev bağımlılığı nedeniyle yapılır ve Rails.env bir değere sahip, ama ben ayrıntıları açık değil.Rake görevinde ortam değişkenleri kullanın

ENV Bir Rake görevinde nasıl kullanabilirim? bunu yapmak için

+0

belirtilen oluyor sadece çünkü rake figaro:heroku yukarı env zorlayacak olursa

Ben, ikincisi öneriyoruz? ENV temel bir Ruby meselesidir, bu yüzden her zaman mevcut çevresel değişkenlerinizi yansıtmalıdır. Uygulama dizininde –

+2

'$ rake some_task'. “ENV” in bir kısmı .env'dir ve Heroku şeyleri için $ ustabaşı run rune görevini yapmam gerekebilir. – Narfanator

+1

@Narfanator bunu yanıtlayabilmem için gerçek bir cevap olarak cevap vermelisiniz. $ Ustabaşı çalıştırmak rake bazı_task' doğru cevap –

cevap

5

İki iyi yolları:

Kullanım Heroku yönettiği "Foreman" aracı. .env içine tüm ortam değişkenleri koyun:

VAR=value 

ve foreman run rake some_task çalıştırın. Veya "Figaro" gemini kullanarak (ve bu şekilde öneririm) .

VAR: value 

ve bu kadar;: config/application.yml içine değişkenler koy rake some_task. Nasıl bu görevi çalıştıran application.yml

+0

olduğunu biliyorum Bu eski bir soru olduğunu biliyorum, ama nasıl bir .env dosyası veya application.yml koyarak, şifrelerinizi/anahtarlarınızı codebase dışında tutmak? ENV değişkenlerini kullanmanın önemli bir nedeni olduğunu düşündüm. Rake'den alabileceğimiz bazı aramalar yok mu? – JosephK

+0

Siz (genellikle) application.yml veya .env dosyanızı repoda kontrol etmiyorsunuz; "codebase" ile kastettiğim şey buydu ve bunları doğrudan ana bilgisayarın ENV'sine yerleştirmek kendi sorunlarına dönüşüyor. Benim sorum * * temelde Rake'den yapabileceğimiz bir arama yapmak istiyor ama ben bulamadım. – Narfanator

+0

Şirketimdeki daha deneyimli uygulamalar bu modeli kullanmaya karar verdiler: 'config = YAML.load (" application.yml ")', fakat aynı zamanda nedenini açıklamaya da karar verdiler. YMMV; Bazı durumlarda (yani, sinatra) ve diğerlerinde (yani, raylarda) kullanıyorum. – Narfanator

İlgili konular