sql >> Database >  >> NoSQL >> MongoDB

Waarom krijg ik fout 500 Het spijt me, maar er is iets misgegaan bij het pushen van mijn app naar Heroku?

Fout

De 500 server error is in feite een dekmantel voor alle keren dat uw server een intern probleem heeft (en uw verzoek niet kan uitvoeren)

De foutafhandeling van Rails leidt al uw fouten naar een reeks bestanden in uw /public map genaamd 422.html , 404.html en 500.html -- vertegenwoordigen de meest voorkomende fouten

De reden dat u de 500-fout ziet, kan van alles in uw app zijn. Dit is wat ik zou doen om het op te lossen:

Omgeving

U krijgt de fout in de productie, wat betekent dat een verschil met de omgevingen het probleem veroorzaakt

Ik zou beginnen met te kijken naar wat er verandert. Meestal zijn het de database of bepaalde omgevingsinstellingen (andere databaseprovider, enz.) die het probleem veroorzaken

DB

De meest voorkomende 500-fouten worden veroorzaakt door DB-inconsistenties tussen ontwikkel- en productieomgevingen. Ik weet niets van mongoïden, maar bij MYSQL / PGSQL zal het probleem te maken hebben met het niet migreren in productie:

heroku run rake db:migrate lost normaal gesproken de meeste db-problemen in productie op

Melding van uitzondering

Er is een heel goed juweeltje genaamd uitzonderingsmelding (geëxtraheerd uit de Rails-kern), een stuk middlware dat foutmeldingen per e-mail verzendt:

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

Je hebt de SendGrid-add-on nodig in Heroku en voeg dit toe aan je 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
  }



  1. MongoDB-bereikquery op volledige ingesloten documentwaarde

  2. MongoDB-indexen en de $or-operator

  3. Integratie van mongodb met elasticsearch in node.js-omgeving

  4. Specifieke velden opnemen in een wildcard-index in MongoDB