sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Por qué recibo el error 500? Lo sentimos, pero algo salió mal al enviar mi aplicación a Heroku.

Error

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
  }