Fehler
Die 500 server error
ist im Grunde eine Deckung für alle Fälle, in denen Ihr Server ein internes Problem hat (und Ihre Anfrage nicht rendern kann)
Die Fehlerbehandlung von Rails leitet alle Ihre Fehler an eine Reihe von Dateien in Ihrem /public
weiter Verzeichnis namens 422.html
, 404.html
und 500.html
-- stellt die häufigsten Fehler dar
Der Grund, warum Sie den 500-Fehler sehen, könnte irgendetwas in Ihrer App sein. Folgendes würde ich tun, um das Problem zu beheben:
Umwelt
Sie erhalten den Fehler in der Produktion, was bedeutet, dass ein Unterschied mit den Umgebungen das Problem verursacht
Ich würde damit beginnen, mir anzusehen, was sich ändert. Normalerweise ist es die DB oder einige Umgebungseinstellungen (anderer DB-Anbieter usw.), die das Problem verursachen
DB
Die häufigsten 500-Fehler werden durch DB-Inkonsistenzen zwischen Entwicklungs- und Produktionsumgebungen verursacht. Ich weiß nichts über Mongoid, aber bei MYSQL / PGSQL wird das Problem damit zu tun haben, dass die Produktion nicht migriert wird:
heroku run rake db:migrate
behebt normalerweise die meisten DB-Probleme in der Produktion
Ausnahmebenachrichtigung
Es gibt ein sehr gutes Juwel namens Ausnahmebenachrichtigung (aus dem Rails-Kern extrahiert), eine Middleware, die Fehlermeldungen per E-Mail versendet:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Sie müssen das SendGrid-Add-on
herunterladen in Heroku und fügen Sie dies zu Ihrer production.rb
hinzu :
#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
}