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" <example@sqldat.com>},
:exception_recipients => %w{example@sqldat.com}
}
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
}