MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Warum erhalte ich Fehler 500. Es tut uns leid, aber beim Pushen meiner App an Heroku ist etwas schief gelaufen?

Fehler

Die 500 server error ist im Grunde eine Deckung für alle Fälle, in denen Ihr Server ein internes Problem hat (und Ihre Anfrage nicht rendern kann)

Die Fehlerbehandlung von Rails leitet alle Ihre Fehler an eine Reihe von Dateien in Ihrem /public weiter Verzeichnis namens 422.html , 404.html und 500.html -- stellt die häufigsten Fehler dar

Der Grund, warum Sie den 500-Fehler sehen, könnte irgendetwas in Ihrer App sein. Folgendes würde ich tun, um das Problem zu beheben:

Umwelt

Sie erhalten den Fehler in der Produktion, was bedeutet, dass ein Unterschied mit den Umgebungen das Problem verursacht

Ich würde damit beginnen, mir anzusehen, was sich ändert. Normalerweise ist es die DB oder einige Umgebungseinstellungen (anderer DB-Anbieter usw.), die das Problem verursachen

DB

Die häufigsten 500-Fehler werden durch DB-Inkonsistenzen zwischen Entwicklungs- und Produktionsumgebungen verursacht. Ich weiß nichts über Mongoid, aber bei MYSQL / PGSQL wird das Problem damit zu tun haben, dass die Produktion nicht migriert wird:

heroku run rake db:migrate behebt normalerweise die meisten DB-Probleme in der Produktion

Ausnahmebenachrichtigung

Es gibt ein sehr gutes Juwel namens Ausnahmebenachrichtigung (aus dem Rails-Kern extrahiert), eine Middleware, die Fehlermeldungen per E-Mail versendet:

  #config/environments/production.rb
  config.middleware.use ExceptionNotification::Rack,
  :email => {
    :email_prefix => "Subject",
    :sender_address => %{"notifier" <[email protected]>},
    :exception_recipients => %w{[email protected]}
  }

Sie müssen das SendGrid-Add-on herunterladen in Heroku und fügen Sie dies zu Ihrer production.rb hinzu :

  #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
  }