MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Por que estou recebendo o erro 500 Desculpe, mas algo deu errado ao enviar meu aplicativo para o Heroku?


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
  }