त्रुटि
500 server error
मूल रूप से हर समय के लिए एक कवर है आपके सर्वर में कोई आंतरिक समस्या है (और आपका अनुरोध प्रस्तुत नहीं कर सकता)
रेल की त्रुटि प्रबंधन आपकी सभी त्रुटियों को आपके /public
. के अंदर फाइलों की एक श्रृंखला तक रूट कर देती है निर्देशिका जिसे 422.html
. कहा जाता है , 404.html
और 500.html
-- सबसे आम त्रुटियों का प्रतिनिधित्व करता है
आपको 500 त्रुटि दिखाई देने का कारण आपके ऐप के अंदर कुछ भी हो सकता है। यहाँ मैं इसे ठीक करने के लिए क्या करूँगा:
पर्यावरण
आपको उत्पादन में त्रुटि मिल रही है, जिसका अर्थ है कि परिवेश के साथ अंतर समस्या का कारण बनेगा
मैं यह देखकर शुरू करूंगा कि क्या बदल रहा है। आम तौर पर, यह डीबी, या कुछ पर्यावरण सेटिंग्स (विभिन्न डीबी प्रदाता इत्यादि) है जो समस्या पैदा कर रहा है
डीबी
सबसे आम 500 त्रुटियां विकास और उत्पादन वातावरण के बीच डीबी विसंगतियों के कारण होती हैं। मैं मोंगोइड के बारे में नहीं जानता, लेकिन MYSQL/PGSQL की पसंद के साथ समस्या उत्पादन में माइग्रेट न करने से संबंधित होगी:
heroku run rake db:migrate
उत्पादन में अधिकांश डीबी मुद्दों को सामान्य रूप से ठीक करता है
अपवाद सूचना
एक बहुत अच्छा रत्न है जिसे अपवाद सूचना कहा जाता है। (रेल कोर से निकाला गया), मिडलवेयर का एक टुकड़ा जो ईमेल द्वारा त्रुटि सूचनाएं भेजता है:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
आपको SendGrid ऐड-ऑन
प्राप्त करना होगा Heroku में और इसे अपने production.rb
. में जोड़ें :
#config/environments/production.rb
config.action_mailer.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com',
:enable_starttls_auto => true
}