Грешка
500 server error
всъщност е прикритие за всички случаи, когато вашият сървър има вътрешен проблем (и не може да изобрази вашата заявка)
Обработката на грешки на Rails насочва всички ваши грешки към поредица от файлове във вашия /public
директория, наречена 422.html
, 404.html
и 500.html
-- представящи най-често срещаните грешки
Причината да виждате грешката 500 може да е нещо във вашето приложение. Ето какво бих направил, за да го поправя:
Околна среда
Получавате грешката в производството, което означава, че разликата със средите ще причинява проблема
Бих започнал, като погледна какво се променя. Обикновено DB или някои настройки на средата (различен доставчик на DB и т.н.) причиняват проблема
DB
Най-често срещаните грешки 500 са причинени от несъответствия в базата данни между развойната и производствената среда. Не знам за mongoid, но с подобни на MYSQL / PGSQL проблемът ще бъде свързан с липсата на мигриране в производството:
heroku run rake db:migrate
обикновено коригира повечето проблеми с db в производството
Известие за изключение
Има едно много добро бижу, наречено известие за изключение (извлечено от ядрото на Rails), част от междинния софтуер, който изпраща известия за грешки по имейл:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Ще трябва да получите добавката SendGrid
в Heroku и добавете това към вашия 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
}