Fel
500 server error
är i princip ett skydd för alla gånger din server har ett internt problem (och inte kan återge din begäran)
Rails felhantering dirigerar alla dina fel till en serie filer i din /public
katalog som heter 422.html
, 404.html
och 500.html
-- representerar de vanligaste felen
Anledningen till att du ser 500-felet kan vara vad som helst i din app. Så här skulle jag göra för att fixa det:
Miljö
Du får felet i produktionen, vilket betyder att en skillnad med miljöerna kommer att orsaka problemet
Jag skulle börja med att titta på vad som förändras. Vanligtvis är det DB, eller vissa miljöinställningar (olika DB-leverantörer etc) som orsakar problemet
DB
De vanligaste 500-felen orsakas av DB-inkonsekvenser mellan utvecklings- och produktionsmiljöer. Jag vet inte om mongoid, men med sådana som MYSQL / PGSQL kommer problemet att vara att göra med att inte migrera i produktionen:
heroku run rake db:migrate
löser normalt de flesta db-problem i produktionen
Undantagsmeddelande
Det finns en mycket bra pärla som heter avisering om undantag (extraherat från Rails-kärnan), ett stycke mellanprogram som skickar felmeddelanden via e-post:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Du måste skaffa SendGrid-tillägget
i Heroku och lägg till detta i din 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
}