Chyba
500 server error
je v podstatě kryt pro všechny případy, kdy má váš server interní problém (a nemůže vykreslit váš požadavek)
Zpracování chyb Rails směruje všechny vaše chyby do řady souborů uvnitř vašeho /public
adresář s názvem 422.html
, 404.html
a 500.html
-- představující nejčastější chyby
Důvod, proč se vám zobrazuje chyba 500, může být cokoli uvnitř vaší aplikace. Zde je to, co bych udělal, abych to napravil:
Prostředí
Dostáváte chybu v produkci, což znamená, že problém bude způsobovat rozdíl v prostředí
Začal bych tím, že se podívám, co se mění. Obvykle je to DB nebo některá nastavení prostředí (jiný poskytovatel DB atd.), co způsobuje problém
DB
Nejběžnějších 500 chyb je způsobeno nekonzistentností DB mezi vývojovým a produkčním prostředím. Nevím o mongoidu, ale u MYSQL / PGSQL bude problém s nemigrací ve výrobě:
heroku run rake db:migrate
normálně řeší většinu problémů s db v produkci
Oznámení o výjimce
Existuje velmi dobrý klenot jménem upozornění na výjimku (vytaženo z jádra Rails), což je součást middlwaru, který odesílá upozornění na chyby e-mailem:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Budete si muset stáhnout doplněk SendGrid
v Heroku a přidejte to do svého 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
}