जवाबों:
डॉक्स के अनुसार , #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 में: रेल / रेलवे / परिशिष्ट / रेल में परिभाषित विधि