Fout
De 500 server error
is in feite een dekmantel voor alle keren dat uw server een intern probleem heeft (en uw verzoek niet kan uitvoeren)
De foutafhandeling van Rails leidt al uw fouten naar een reeks bestanden in uw /public
map genaamd 422.html
, 404.html
en 500.html
-- vertegenwoordigen de meest voorkomende fouten
De reden dat u de 500-fout ziet, kan van alles in uw app zijn. Dit is wat ik zou doen om het op te lossen:
Omgeving
U krijgt de fout in de productie, wat betekent dat een verschil met de omgevingen het probleem veroorzaakt
Ik zou beginnen met te kijken naar wat er verandert. Meestal zijn het de database of bepaalde omgevingsinstellingen (andere databaseprovider, enz.) die het probleem veroorzaken
DB
De meest voorkomende 500-fouten worden veroorzaakt door DB-inconsistenties tussen ontwikkel- en productieomgevingen. Ik weet niets van mongoïden, maar bij MYSQL / PGSQL zal het probleem te maken hebben met het niet migreren in productie:
heroku run rake db:migrate
lost normaal gesproken de meeste db-problemen in productie op
Melding van uitzondering
Er is een heel goed juweeltje genaamd uitzonderingsmelding (geëxtraheerd uit de Rails-kern), een stuk middlware dat foutmeldingen per e-mail verzendt:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Je hebt de SendGrid-add-on
nodig in Heroku en voeg dit toe aan je 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
}