Kesalahan
500 server error
pada dasarnya adalah penutup untuk semua waktu server Anda memiliki masalah internal (dan tidak dapat membuat permintaan Anda)
Penanganan kesalahan Rails mengarahkan semua kesalahan Anda ke serangkaian file di dalam /public
. Anda direktori bernama 422.html
, 404.html
dan 500.html
-- mewakili kesalahan paling umum
Alasan Anda melihat kesalahan 500 bisa karena apa saja di dalam aplikasi Anda. Inilah yang akan saya lakukan untuk memperbaikinya:
Lingkungan
Anda mendapatkan kesalahan dalam produksi, artinya perbedaan dengan lingkungan akan menyebabkan masalah
Saya akan mulai dengan melihat apa yang berubah. Biasanya, DB, atau beberapa pengaturan lingkungan (penyedia DB yang berbeda, dll) yang menyebabkan masalah
DB
500 kesalahan paling umum disebabkan oleh inkonsistensi DB antara lingkungan pengembangan &produksi. Saya tidak tahu tentang mongoid, tetapi dengan orang-orang seperti MYSQL / PGSQL masalahnya adalah dengan tidak bermigrasi dalam produksi:
heroku run rake db:migrate
biasanya memperbaiki sebagian besar masalah db dalam produksi
Pemberitahuan Pengecualian
Ada permata yang sangat bagus yang disebut pemberitahuan pengecualian (diekstrak dari inti Rails), bagian dari middlware yang mengirimkan pemberitahuan kesalahan melalui email:
#config/environments/production.rb
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "Subject",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Anda harus mendapatkan pengaya SendGrid
di Heroku dan tambahkan ini ke 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
}