जवाबों:
डॉक्स के अनुसार , #Rails.env
लपेटता है RAILS_ENV
:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
लेकिन, विशेष रूप से इसे कैसे लपेटा हुआ है, इसका उपयोग करके देखें ActiveSupport::StringInquirer
:
इस वर्ग में एक तार लपेटना आपको समानता के लिए परीक्षण करने का एक प्रारंभिक तरीका देता है। Rails.env द्वारा दिया गया मान StringInquirer ऑब्जेक्ट में लपेटा जाता है इसलिए इसे कॉल करने के बजाय:
Rails.env == "production"
आप इसे कॉल कर सकते हैं:
Rails.env.production?
इसलिए वे बिल्कुल बराबर नहीं हैं , लेकिन वे काफी करीब हैं। मैंने अभी तक रेल का उपयोग नहीं किया है, लेकिन मैं कहूंगा #Rails.env
कि निश्चित रूप से उपयोग के कारण अधिक नेत्रहीन आकर्षक विकल्प है StringInquirer
।
Rails.env
है कि नए मानक के रूप RAILS_ENV
में पदावनत किया जा रहा है।
ENV['RAILS_ENV']
अब पदावनत हो गया है ।
आपको Rails.env
वह उपयोग करना चाहिए जो स्पष्ट रूप से बहुत अच्छा है।
रेल से पहले 2.x वर्तमान वातावरण का उपयोग करने के लिए पसंदीदा तरीका RAILS_ENV
निरंतर का उपयोग कर रहा था । इसी तरह, आप RAILS_DEFAULT_LOGGER
वर्तमान लकड़हारा RAILS_ROOT
प्राप्त करने या रूट फ़ोल्डर में पथ प्राप्त करने के लिए उपयोग कर सकते हैं ।
रेल 2.x से शुरू, रेल ने Rails
कुछ विशेष विधियों के साथ मॉड्यूल पेश किया :
यह सिर्फ एक कॉस्मेटिक बदलाव नहीं है। रेल मॉड्यूल मानक स्थिरांक जैसे StringInquirer
समर्थन का उपयोग करके उपलब्ध क्षमताओं को प्रदान नहीं करता है। कुछ मामूली अंतर भी हैं। Rails.root
एक सरल लेकिन String
एक Path
उदाहरण वापस नहीं करता है ।
वैसे भी, पसंदीदा तरीका Rails
मॉड्यूल का उपयोग कर रहा है। लगातार रेल 3 में पदावनत किया जाता है और भविष्य में रिलीज में हटा दिया जाएगा, शायद रेल 3.1।
Rails.env
बिना किसी समस्या के काम करता है।
अद्यतन: रेल 3.0.9 में: रेल / रेलवे / परिशिष्ट / रेल में परिभाषित विधि