Hangi env içinde çalıştığını kontrol ederken her iki örnekte de görüyorum. Tercih edilen nedir? Bütün niyet ve amaçlar için eşit mi?
Hangi env içinde çalıştığını kontrol ederken her iki örnekte de görüyorum. Tercih edilen nedir? Bütün niyet ve amaçlar için eşit mi?
Yanıtlar:
Dokümanlara göre , #Rails.env
sarar RAILS_ENV
:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
Ancak, aşağıdakileri kullanarak özellikle nasıl sarıldığına bakın ActiveSupport::StringInquirer
:
Bu sınıfta bir dize sarmak, eşitliği test etmenin daha güzel bir yolunu sunar. Rails.env tarafından döndürülen değer, bunu çağırmak yerine bir StringInquirer nesnesine sarılır:
Rails.env == "production"
buna şöyle diyebilirsiniz:
Rails.env.production?
Yani tam olarak eşdeğer değiller, ama oldukça yakınlar. Rails'i henüz çok fazla kullanmadım, ama #Rails.env
kesinlikle görsel olarak daha çekici bir seçenek olduğunu söyleyebilirim StringInquirer
.
Rails.env
gibi yeni standart olduğunu da belirtmek gerekir RAILS_ENV
.
ENV['RAILS_ENV']
artık kullanımdan kaldırıldı .
Rails.env
Açıkça çok daha güzel olanı kullanmalısınız .
Rails 2.x öncesinde mevcut ortamı elde etmenin tercih edilen yolu RAILS_ENV
sabiti kullanmaktı . Aynı şekilde, RAILS_DEFAULT_LOGGER
geçerli günlükçüyü RAILS_ROOT
almak veya kök klasörün yolunu almak için de kullanabilirsiniz .
Rails 2.x'ten başlayarak, Rails Rails
modülü bazı özel yöntemlerle tanıttı :
Bu sadece kozmetik bir değişiklik değil. Rails modülü, StringInquirer
destek gibi standart sabitler kullanılarak bulunmayan özellikler sunar . Bazı ufak farklılıklar da var. Rails.root
basit String
bir Path
örnek vermez .
Her neyse, tercih edilen yol Rails
modülü kullanmaktır . Sabitler Rails 3'te kullanımdan kaldırılmıştır ve gelecekteki bir sürümde, belki de Rails 3.1'de kaldırılacaktır.
Rails.env
sorunsuz çalışır.
Güncelleme: Rails 3.0.9'da: railties / lib / rails.rb'de tanımlanan env yöntemi