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
}