कैसे बताएं कि क्या रेल उत्पादन में है?


86

मैं script/server -e productionउत्पादन मोड में रेल शुरू करता था। यह किया और मुझे कोई त्रुटि नहीं मिली। हालाँकि मैं यह कैसे बताऊँ कि यह उत्पादन मोड में है? मैंने एक गैर-मौजूद मार्ग की कोशिश की, और मुझे विकास में एक समान त्रुटि पृष्ठ मिला।

मैंने सोचा कि अगर उत्पादन मॉडल के तहत, मुझे 404 त्रुटि पृष्ठ मिलता है जो मेरे / सार्वजनिक फ़ोल्डर में है।

इसका मतलब यह उत्पादन मोड में शुरू नहीं किया था?

आपकी सहायता के लिए धन्यवाद।

जवाबों:


34

2 आसान तरीके:

tail -f log/production.log

यदि आप ऐप को हिट करने के बाद उस लॉग को पॉप करने वाली प्रविष्टियां हैं, तो आप उत्पादन मोड में हैं।

दूसरा तरीका:

अपने विचारों में से एक (शायद लेआउट अच्छा है), बस जोड़ें

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

और यह आपको दिखाएगा कि आप किस वातावरण में चल रहे हैं।

संपादित करें

आपको किसी भी वातावरण पर वास्तविक त्रुटि पृष्ठों के बजाय डिफ़ॉल्ट अपवाद पृष्ठ दिखाई देगा यदि अनुरोध "स्थानीय" माना जाता है (जो कि लोकलहोस्ट या 127.0.0.1 से है), आप इसे अपने साथ जोड़कर इसे ओवरराइड कर सकते हैं ApplicationController

def local_request?
  false
end

आप इस विधि को डॉक्स में एपीआई में पा सकते हैं


मुझे काम करने का दूसरा तरीका नहीं मिल पा रहा है, लेकिन मेरे प्रोडक्शन में एंट्रीज हैं। यह कहते हुए मैंने एक्स टाइम पर एक टास्क बनाया। तो मुझे सही 404 त्रुटि पृष्ठ क्यों नहीं मिल रहा है? क्या मुझे सही त्रुटि पृष्ठ प्रदान करने के लिए कहीं निर्दिष्ट करना होगा? सहायता के लिए धन्यवाद।
भेजा- hil

मेरे विचार में मुझे एक त्रुटि मिली और इसके बजाय @ कृष्णप्रसाद के दृष्टिकोण का उपयोग करना पड़ा।
बेसी

5
कृपया ध्यान दें RAILS_ENVकि पदावनत कर दिया गया है। Rails.envइसके बजाय उपयोग करें ।
सौलिवेनुह

238

यदि इसकी रेल 3.1+ है, तो उत्पादन में Rails.env.production?वापस आ जाएगी true

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

2
>> Rails.envके माध्यम से rails cकिसी भी मोड के लिए प्रदर्शित करने के लिए प्रकट होता है।
12 obfk

6
Rails.env.development?भी उपलब्ध।
१२'१४

एक प्रश्नचिह्न के साथ सब कुछ उपलब्ध है। Rails.envएक स्ट्रिंग के साथ सजाया गया है ActiveSupport::StringInquirerapi.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
सेबस्टियन वोम मीर

एक नोट के रूप में, यह रेल कंसोल में भी काम करता है। एक उत्पादन सर्वर पर मैं चलाने में सक्षम था: रेल कंसोल, फिर ऊपर कमांड।
रयान

28

आधुनिक रेल संस्करणों (3+) के लिए, Rails.envपर्यावरण को एक के रूप में लौटाता है String:

Rails.env #=> "production"

प्रत्येक पर्यावरण के लिए सहायक सहायक भी हैं जो एक वापसी करेंगे Boolean:

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


3

मुझे रेल सर्वर को पुनः आरंभ करना और कमांड लाइन पर दूसरी पंक्ति पढ़ना बहुत आसान लगा:

रनिंग rails s -e productionआउटपुट:

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

उदाहरण के लिए Webrick था, लेकिन कुछ लोगों को समझ में नहीं आया कि कैसे बदलते सर्वर सिर्फ नाम का विकल्प देंगे। स्पष्टता के लिए अद्यतन किया गया।


8
कोई भी WEBrickउत्पादन में उपयोग नहीं कर रहा है।
हौलेथ

हौलेथ बिल्कुल सही है। यह केवल यह परीक्षण करने के लिए है कि विकास करते समय आप किस वातावरण में हैं।
bkunzi01

अगर यह जवाब ट्रोलिंग है तो इसमें महारत है! बधाई हो!
जद।

-2

कमांड लाइन विकल्प

$ गूंज $ RAILS_ENV


सर्वर इनलाइन ENV var के साथ शुरू किया गया था तो यह काम नहीं करेगा। उस ने कहा, अगर ऐसा किया गया था, तो एक स्क्रिप्ट / अन्य उपनाम / आदि को कहीं न कहीं डिस्क पर रहना चाहिए, जिसमें RIDS_ENV संस्करण शामिल होगा। कोई इसके लिए डिस्क खोज सकता है, जैसे किack
न्यू अलेक्जेंड्रिया

यह काम नहीं करता है .... चर में क्या है और यह कैसे पर्यावरण प्राप्त कर रहा है ???
ज़ी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.