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
}