MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Perché ricevo l'errore 500 Siamo spiacenti ma qualcosa è andato storto durante il push della mia app su Heroku?

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
  }