Errore
Il 500 server error
è fondamentalmente una copertura per tutte le volte che il tuo server ha un problema interno (e non può rendere la tua richiesta)
La gestione degli errori di Rails indirizza tutti i tuoi errori a una serie di file all'interno del tuo /public
directory chiamata 422.html
, 404.html
e 500.html
-- che rappresentano gli errori più comuni
Il motivo per cui visualizzi l'errore 500 potrebbe essere qualcosa all'interno della tua app. Ecco cosa farei per risolverlo:
Ambiente
Stai ricevendo l'errore in produzione, il che significa che una differenza con gli ambienti causerà il problema
Inizierei guardando cosa sta cambiando. In genere, è il DB o alcune impostazioni dell'ambiente (provider DB diverso, ecc.) a causare il problema
DB
Gli errori 500 più comuni sono causati da incongruenze del DB tra gli ambienti di sviluppo e produzione. Non conosco mongoid, ma con MYSQL / PGSQL il problema avrà a che fare con la mancata migrazione in produzione:
heroku run rake db:migrate
normalmente risolve la maggior parte dei problemi di db in produzione
Notifica di eccezione
C'è una gemma molto buona chiamata notifica di eccezione (estratto dal core di Rails), un pezzo di middlware che invia notifiche di errore via e-mail:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Dovrai ottenere il componente aggiuntivo SendGrid
in Heroku e aggiungilo al tuo 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
}