El 500 server error
es básicamente una tapadera para todas las veces que su servidor tiene un problema interno (y no puede procesar su solicitud)
El manejo de errores de Rails enruta todos sus errores a una serie de archivos dentro de su /public
directorio llamado 422.html
, 404.html
y 500.html
-- representando los errores más comunes
La razón por la que está viendo el error 500 podría ser cualquier cosa dentro de su aplicación. Esto es lo que haría para solucionarlo:
Medio ambiente
Está recibiendo el error en producción, lo que significa que una diferencia con los entornos causará el problema
Comenzaría mirando lo que está cambiando. Por lo general, es la base de datos o alguna configuración del entorno (diferente proveedor de base de datos, etc.) lo que está causando el problema
BD
Los errores 500 más comunes son causados por inconsistencias en la base de datos entre los entornos de desarrollo y producción. No sé sobre mongoid, pero con los gustos de MYSQL / PGSQL, el problema tendrá que ver con no migrar en producción:
heroku run rake db:migrate
normalmente corrige la mayoría de los problemas de db en producción
Notificación de excepción
Hay una gema muy buena llamada notificación de excepción (extraído del núcleo de Rails), una pieza de middlware que envía notificaciones de error por correo electrónico:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Deberá obtener el complemento SendGrid
en Heroku y añádelo a tu 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
}