2012-05-11 27 views
6

Raylar 3.0x uygulamaları için Nginx + Phusion Yolcu ile ubuntu sunucuları çalıştırıyoruz. Bir konsol (demet exec raylar c) ve çıkış ENV [ "MC_TEST"] çalıştırmakphusion yolcu çevre değişkenlerini görmüyor mu?

MC_TEST=true 

I 'doğru bkz

I test makineleri/etc/ortamında belirlenen bir ortam değişkenine sahip '. Ancak, aynı kodu bir sayfaya koyarsam (<% = ENV ["MC_TEST"]%>) hiçbir şey görmez. Bu değişken mevcut değil. sorusuna götürüyor

:

1 - nginx (SetEnv apache değil) ile yolcu içine Ortam değişkenlerini almak için doğru yolu nedir?

2 - Yolcu neden uygun bir ortama sahip değil?

cevap

7

Yolcu füzyonu v4 +, ortam değişkenlerinin doğrudan bashrc dosyasından okunmasını sağlar. bashrc yolcu işlemi yürütülür altında kullanıcının ev klasörüne yaşıyor emin olun İşte

bashrc ayrıntılarına girer documentation (benim durumumda, EC2 linux ve nginx için, ubuntu oldu)

+0

Bu dokümantasyon bölümü, çevre değişkenleri hakkında ihtiyacınız olan her şeyi * açıklar. Ne oldukları, nasıl çalıştıkları, mülkleri ve bunları Phusion Yolcu tarafından sunulan uygulamalara nasıl aktaracakları. – Hongli

+0

Sadece bir not, ancak bu etkileşimli olmayan kabuklarda bile varsayılan olarak çalışır. – digicazter

4

Ubuntu'da nginx ve nginx init betiği ile yolcu kullanırken aynı sorunu yaşıyorum. Bunun nedeni, nginx ve
başlatmak için sudo service nginx restart (init betiği tarafından kurulmuş) kullanıyorum, root tarafından çalışıyordu ve root, oturum açma kullanıcı ortamı değişkeninizi alamadı. Bunun için iki çözüm var. One, nginx'i elle çalıştırıyor.

sudo service nginx stop 
sudo -E /path/to/your/nginx 

bir sonraki çözüm nasılsa çirkindir sizin nginx init komut

export MC_TEST=true 

için env ekleyin, Ama çalışır. Ve daha iyi bir yol, init betiğini oturum açma kullanıcısı env'sini korumak için söyleyecek bir yapılandırma bulduğunu düşünüyorum.

+0

Nginx'i elle çalıştırmak benim için hile yaptı. Teşekkürler! – Myxtic

0

Başka çirkin bir çözüm buldum.

env_file = '/etc/environment' 
if File.exist?(env_file) 
    text = File.open(env_file).read 
    text.each_line do |line| 
    key, val = line.split('=', 2) 
    ENV[key] = val.strip 
    end 
end 
İlgili konular