sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvorfor får jeg fejl 500. Vi beklager, men noget gik galt, da jeg sendte min app til Heroku?

Fejl

500 server error er dybest set en dækning for alle de gange, din server har et internt problem (og ikke kan gengive din anmodning)

Rails' fejlhåndtering dirigerer alle dine fejl til en række filer inde i din /public mappe kaldet 422.html , 404.html og 500.html -- repræsenterer de mest almindelige fejl

Grunden til, at du ser 500-fejlen, kan være hvad som helst i din app. Her er, hvad jeg ville gøre for at rette det:

Miljø

Du får fejlen i produktionen, hvilket betyder, at en forskel med miljøerne vil forårsage problemet

Jeg vil begynde med at se på, hvad der ændrer sig. Typisk er det DB eller nogle miljøindstillinger (anden DB-udbyder osv.), der forårsager problemet

DB

De mest almindelige 500-fejl er forårsaget af DB-uoverensstemmelser mellem udviklings- og produktionsmiljøer. Jeg ved ikke med mongoid, men med MYSQL / PGSQL vil problemet være at gøre med ikke at migrere i produktionen:

heroku run rake db:migrate løser normalt de fleste db-problemer i produktionen

Undtagelsesmeddelelse

Der er en meget god perle kaldet undtagelsesmeddelelse (ekstraheret fra Rails-kernen), et stykke middlware, der sender fejlmeddelelser via e-mail:

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

Du skal hente SendGrid-tilføjelsen i Heroku og tilføj dette til din 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
  }



  1. Kunne ikke oprette forbindelse til Redis på 127.0.0.1:6379:Forbindelse nægtet med hjemmebrygget

  2. implementerer redis til heroku ude af stand til at oprette forbindelse

  3. Tjek MongoDB-godkendelse med Java 3.0-driver

  4. MongoDB opslagsrække af objekter efter felt (sammenføjningsbetingelser og ukorrelerede underforespørgsler)