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.envsarar 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.envkesinlikle görsel olarak daha çekici bir seçenek olduğunu söyleyebilirim StringInquirer.
Rails.envgibi yeni standart olduğunu da belirtmek gerekir RAILS_ENV.
ENV['RAILS_ENV']artık kullanımdan kaldırıldı .
Rails.envAçıkça çok daha güzel olanı kullanmalısınız .
Rails 2.x öncesinde mevcut ortamı elde etmenin tercih edilen yolu RAILS_ENVsabiti kullanmaktı . Aynı şekilde, RAILS_DEFAULT_LOGGERgeçerli günlükçüyü RAILS_ROOTalmak veya kök klasörün yolunu almak için de kullanabilirsiniz .
Rails 2.x'ten başlayarak, Rails Railsmodülü bazı özel yöntemlerle tanıttı :
Bu sadece kozmetik bir değişiklik değil. Rails modülü, StringInquirerdestek gibi standart sabitler kullanılarak bulunmayan özellikler sunar . Bazı ufak farklılıklar da var. Rails.rootbasit Stringbir Pathörnek vermez .
Her neyse, tercih edilen yol Railsmodü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.envsorunsuz çalışır.
Güncelleme: Rails 3.0.9'da: railties / lib / rails.rb'de tanımlanan env yöntemi