2013-03-18 8 views
60

मेरे पास कुछ कोड है जो केवल तभी चलाने की आवश्यकता है जब रेल ऐप विकास पर्यावरण (यानी $ रेल सर्वर) में है लेकिन परीक्षण वातावरण में नहीं (यानी $ रेक परीक्षण)। ।मैं कैसे निर्धारित कर सकता हूं कि मेरी रेल विकास पर्यावरण में है या नहीं, परीक्षण वातावरण?

जब मैं

if Rails.env.development? 
    dont run me during testing 
end 

कोड की जो पर्यावरण मैं में हूँ परवाह किए बिना निष्पादित हो जाता है की कोशिश मैं भी कोशिश की है:

if Rails.env.development? and not Rails.env.test? 
    NO, REALLY, DONT RUN ME DURING TESTING 
end 

लेकिन प्यार नहीं।

इसके बजाय मुझे क्या करना चाहिए?

पीटर।

+0

यह कोड काम करना चाहिए। क्या आपने उस ब्लॉक के अंदर 'Rails.env' को आउटपुट करने का प्रयास किया है, यह देखने के लिए कि रेलवे किस पर्यावरण का उपयोग कर रहा है? – PinnyM

+1

मुझे लगता है कि यह "और नहीं" बिट्स हो सकता है .. यह && के समान नहीं है! यह मुझे अनुमान है .. क्या आपको कोई समाधान मिला? – baash05

+0

मुझे कभी समाधान नहीं मिला। किसी भी कारण से, रेल अपने शुरुआती दो बार चलाते हैं (नीचे टिप्पणी देखें)। मैंने बाद में रेलों को त्याग दिया है। – spierepf

उत्तर

114

ऐसा लगता है कि आप इसे सही तरीके से कॉल कर रहे हैं। शायद समस्या यह है कि पर्यावरण को कहीं अलग नाम दिया गया है। कंसोल में आज़माएं:

[1] pry(main)> Rails.env 
=> "development" 
[2] pry(main)> Rails.env.development? 
=> true 
[3] pry(main)> Rails.env.test? 
=> false 

... यह पुष्टि करने के लिए कि पर्यावरण आप क्या सोचते हैं।

+1

ठीक है, मैंने एक प्रारंभकर्ता बनाया है जो केवल 'Rails.env रखता है'। नतीजा यह है कि $ रेल सर्वर 'विकास' देता है, जबकि $ रेक परीक्षण दोनों 'विकास' और 'परीक्षण' देता है। यह मुझे बताता है कि रेल डॉलर के रेक के दौरान दो बार मेरे शुरुआतीकरण को चला रहा है। – spierepf

+1

आप कंसोल को एक विशिष्ट वातावरण में भी खोल सकते हैं, उदा। 'RAILS_ENV = परीक्षण रेल कंसोल'। – Mori

+1

चिंता न करें अगर आपने अपने ऐप में प्राइम इंस्टॉल नहीं किया है। यह सरल कंसोल में भी काम करता है – ImranNaqvi

संबंधित मुद्दे

 संबंधित मुद्दे