MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Pourquoi est-ce que j'obtiens l'erreur 500 Nous sommes désolés mais quelque chose s'est mal passé lors de la transmission de mon application à Heroku ?

Erreur

Le 500 server error est essentiellement une couverture pour toutes les fois où votre serveur a un problème interne (et ne peut pas rendre votre demande)

La gestion des erreurs de Rails achemine toutes vos erreurs vers une série de fichiers dans votre /public répertoire appelé 422.html , 404.html et 500.html -- représentant les erreurs les plus courantes

La raison pour laquelle vous voyez l'erreur 500 peut être n'importe quoi dans votre application. Voici ce que je ferais pour y remédier :

Environnement

Vous obtenez l'erreur en production, ce qui signifie qu'une différence avec les environnements sera à l'origine du problème

Je commencerais par regarder ce qui change. Généralement, c'est la base de données ou certains paramètres d'environnement (fournisseur de base de données différent, etc.) qui est à l'origine du problème

DB

Les erreurs 500 les plus courantes sont causées par des incohérences de base de données entre les environnements de développement et de production. Je ne sais pas pour mongoid, mais avec MYSQL / PGSQL, le problème sera de ne pas migrer en production :

heroku run rake db:migrate résout normalement la plupart des problèmes de base de données en production

Notification d'exception

Il existe un très bon bijou appelé notification d'exception (extrait du core Rails), un middleware qui envoie des notifications d'erreur par email :

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

Vous devrez obtenir le module complémentaire SendGrid dans Heroku et ajoutez ceci à votre 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
  }