2011-01-09 12 views
7

अरे, मुझे उम्मीद है कि आप मेरी मदद कर सकते हैं।rails3 में 404/500 जैसे त्रुटियों को कैसे संभालना है

मैं उपयोगकर्ता को अपने सार्वजनिक फ़ोल्डर में डिफ़ॉल्ट त्रुटि पृष्ठों 404.html और 500.html पर निर्देशित करने का एक तरीका खोजने का प्रयास कर रहा हूं।

तो जब कोई रूटिंग या नामांकन त्रुटि होती है तो इसे वहां निर्देशित किया जाना चाहिए। मैंने पहले से ही अपने एप्लिकेशन नियंत्रक में कुछ सामान की कोशिश की लेकिन यह काम नहीं किया।

बहुत धन्यवाद !!

+0

मैंने सोचा कि सार्वजनिक फ़ोल्डर में 404.htm और 500.htm डालना ठीक है। लेकिन मुझे यकीन नहीं। – PeterWong

+0

मुझे डिफ़ॉल्ट रूप से वहां मिल गया। लेकिन अगर त्रुटियां होती हैं तो वे दिखाई नहीं देते हैं – daniel

उत्तर

19

रेलवे उत्पादन मोड में चलते समय स्वचालित रूप से आपके लिए यह करता है। जब आप अपने एप्लिकेशन को लाइव सर्वर पर अपलोड करते हैं, तो रेल उन अपवादों को संभालने और सही शीर्षलेख स्थिति के साथ सही त्रुटि पृष्ठों को प्रस्तुत करने का ख्याल रखता है। यदि आप यह देखने की कोशिश कर रहे हैं कि वे पृष्ठ किस प्रकार दिख रहे हैं (परीक्षण या कुछ के लिए), बस उन्हें सीधे http://localhost:3000/404.html

जब भी आप लाइव सर्वर पर अपना रेल एप्लिकेशन सेट करते हैं (चलिए अपाचे को उदाहरण के रूप में उपयोग करते हैं) के माध्यम से सीधे पहुंचें, तो आप अपने आवेदन में साइट रूट को /public फ़ोल्डर के रूप में दें। फिर, जब भी उस सर्वर पते पर कोई अनुरोध किया जाता है, तो अपाचे पहले उस सार्वजनिक फ़ोल्डर में दिखता है और एक स्थिर संपत्ति की सेवा करने का प्रयास करता है (यह [environment].rb में कॉन्फ़िगर करने योग्य विकल्प है)। अगर यह अनुरोधित पृष्ठ नहीं मिल रहा है, तो अनुरोध रूबी स्टैक के माध्यम से भेजा जाता है।

उत्पादन मोड में, यदि रेलों को ऐसी त्रुटि का सामना करना पड़ता है जो संभाला नहीं जाता है (यानी शुरू होता है, बचाव), तो यह त्रुटि को पूरी तरह से ढेर तक फेंकता है, जो तब अपाचे (फिर से, मेरे उदाहरण में) को बताता है एक उचित त्रुटि प्रस्तुत करें। कोई जरूरत आपको लगता है कि मैन्युअल रूप से करना है कि -

ActiveRecord::RecordNotFound => 404 (page not found) 
nil.method => 500 (server error) unless you turn off whiny nils 
ActionController::RoutingError => 404 (page not found) 
+0

ठीक है बहुत बहुत धन्यवाद !! – daniel

+0

@DannyRe - मैंने अपने उत्तर में और अधिक जोड़ा है कि आपको सहायक मिल सकता है – sethvargo

2

अपने आप होता है, तो उत्पादन मोड में चलाएँ:

यहाँ है कि आप विकास मोड और वे क्या उत्पादन मोड में प्रस्तुत करना में देखेंगे कुछ सामान्य त्रुटियां।

2

रूटिंग त्रुटि उत्पन्न करने वाले सभी अनुरोधों को पुनर्निर्देशित करने के लिए this post पर एक नज़र डालें।

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