Rayların üretimde olup olmadığı nasıl anlaşılır?


86

Kullandığım script/server -e productionüretim modunda rayları başlatın. Oldu ve hiç hata almadım. Ancak üretim modunda olup olmadığını nasıl anlarım? Varolmayan bir yol denedim ve geliştirmede yaptığım benzer bir hata sayfası aldım.

Üretim modeli altında / public klasörümdeki 404 hata sayfasını alırım diye düşündüm.

Üretim modunda başlamadığı anlamına mı geliyor?

Yardımınız için teşekkürler.

Yanıtlar:


35

2 kolay yol:

tail -f log/production.log

Uygulamaya bastıktan sonra bu günlüğü dolduran girişler varsa, üretim modundasınız demektir.

ikinci yol:

görünümlerinizden birinde (muhtemelen düzen iyidir), sadece

<%= "Environment: #{RAILS_ENV}" %>

Ve bu size hangi ortamda çalıştığınızı gösterecektir.

Düzenle

Herhangi bir ortamdaki gerçek hata sayfaları yerine varsayılan istisna sayfasını göreceksiniz, eğer istek "yerel" olarak kabul edilirse (yani localhost'tan veya 127.0.0.1'den), bunu ekleyerek geçersiz kılabilirsiniz. ApplicationController

def local_request?
  false
end

Bu yöntemi api'deki belgelerde bulabilirsiniz.


Çalışmanın ikinci yolunu bulamıyorum, ancak production.log dosyamda X zamanında bir Görev oluşturduğumu belirten girişler var. Öyleyse neden doğru 404 hata sayfasını alamıyorum? Doğru hata sayfasını sağlamak için bir yer belirtmem gerekiyor mu? Yardım için teşekkürler.
sent-hil

Benim görüşüme göre bir hata aldım ve bunun yerine @ Krishnaprasad'ın yaklaşımını kullanmak zorunda kaldım.
Besi

5
Lütfen unutmayın RAILS_ENV, kullanımdan kaldırıldı. Rails.envBunun yerine kullanın .
Soullivaneuh

238

Rayları 3.1+ ise, üretim sırasında Rails.env.production?geri dönecektir true.

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  

2
>> Rails.envüzerinden rails cherhangi bir mod için görüntülenir.
originalhat

6
Rails.env.development?Ayrıca mevcut.
hlcs

Soru işaretli her şey mevcuttur. Rails.envile süslenmiş bir dizedir ActiveSupport::StringInquirer. api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
Sebastian vom Meer

Bir not olarak, bu aynı zamanda raylar konsolunda da çalışır. Bir üretim sunucusunda şunu çalıştırabildim: rails console, ardından yukarıdaki komut.
Ryan

28

Modern Rails sürümleri (3+) için, Rails.env için ortamı şu şekilde döndürür String:

Rails.env #=> "production"

Ayrıca her ortam için aşağıdakileri döndürecek yardımcı erişimciler vardır Boolean:

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  


3

Rails sunucusunu yeniden başlatıp komut satırındaki ikinci satırı okumayı çok daha kolay buldum:

Koşu rails s -e productionçıkışları:

=> Booting Puma
=> Rails 4.2.4 application starting in `production` on http://localhost:3000

Örnekte Webrick vardı, ancak bazı insanlar sunucuları değiştirmenin sadece adın yerini alacağını anlamadı. Netlik için güncellendi.


8
WEBrickÜretimde aklı başında kimse kullanmıyor .
Hauleth

Hauleth kesinlikle doğru. Bu, geliştirme sırasında hangi ortamda olduğunuzu test etmek içindir.
bkunzi01

Bu cevap trolling ise, ustalık demektir! Tebrikler!
JD.

-2

komut satırı alternatifi

$ echo $ RAILS_ENV


Sunucu satır içi bir ENV var ile başlatıldıysa bu çalışmayacaktır. Bununla birlikte, eğer bu yapıldıysa, RAILS_ENV değişkenini içerecek bir betik / takma ad / vb. Biri diski arayabilir, örneğinack
Yeni İskenderiye

bu işe yaramıyor .... değişkende ne var ve ortamı nasıl alıyor ???
z atef
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.