Erro
A
500 server error
é basicamente uma cobertura para todas as vezes que seu servidor tem um problema interno (e não pode renderizar sua solicitação) O tratamento de erros do Rails roteia todos os seus erros para uma série de arquivos dentro do seu
/public
diretório chamado 422.html
, 404.html
e 500.html
-- representando os erros mais comuns O motivo pelo qual você está vendo o erro 500 pode ser qualquer coisa dentro do seu aplicativo. Aqui está o que eu faria para corrigi-lo:
Ambiente
Você está recebendo o erro na produção, o que significa que uma diferença com os ambientes estará causando o problema
Eu começaria olhando para o que está mudando. Normalmente, é o banco de dados ou algumas configurações de ambiente (diferentes provedores de banco de dados etc.) que estão causando o problema
BD
Os erros 500 mais comuns são causados por inconsistências de banco de dados entre ambientes de desenvolvimento e produção. Eu não sei sobre o mongoid, mas com os gostos do MYSQL / PGSQL o problema será não migrar em produção:
heroku run rake db:migrate
normalmente corrige a maioria dos problemas de banco de dados em produção Notificação de exceção
Há uma jóia muito boa chamada notificação de exceção (extraído do núcleo do Rails), um middlware que envia notificações de erro por email:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Você precisará obter o complemento SendGrid no Heroku e adicione isso ao seu
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
}