MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tại sao tôi gặp lỗi 500 Chúng tôi rất tiếc nhưng đã xảy ra sự cố khi đẩy ứng dụng của tôi lên Heroku?

Lỗi

500 server error về cơ bản là sự bảo vệ cho tất cả những lần máy chủ của bạn gặp sự cố nội bộ (và không thể hiển thị yêu cầu của bạn)

Xử lý lỗi của Rails định tuyến tất cả các lỗi của bạn đến một loạt các tệp bên trong /public của bạn thư mục có tên 422.html , 404.html500.html - đại diện cho các lỗi phổ biến nhất

Lý do bạn gặp lỗi 500 có thể là bất kỳ thứ gì bên trong ứng dụng của bạn. Đây là những gì tôi sẽ làm để khắc phục nó:

Môi trường

Bạn đang gặp lỗi trong quá trình sản xuất, có nghĩa là sự khác biệt với môi trường sẽ gây ra sự cố

Tôi sẽ bắt đầu bằng cách xem xét những gì đang thay đổi. Thông thường, đó là DB hoặc một số cài đặt môi trường (nhà cung cấp DB khác, v.v.) gây ra sự cố

DB

Hầu hết các lỗi 500 phổ biến là do DB không nhất quán giữa môi trường phát triển và sản xuất. Tôi không biết về mongoid, nhưng với những thứ như MYSQL / PGSQL, vấn đề sẽ liên quan đến việc không di chuyển trong sản xuất:

heroku run rake db:migrate thường khắc phục hầu hết các sự cố db trong quá trình sản xuất

Thông báo ngoại lệ

Có một viên ngọc rất hay có tên là thông báo ngoại lệ (được trích xuất từ ​​lõi Rails), một phần của phần mềm trung gian gửi thông báo lỗi qua email:

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

Bạn sẽ cần tải tiện ích bổ sung SendGrid trong Heroku và thêm cái này vào production.rb của bạn :

  #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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. console.log không hiển thị các thuộc tính đối tượng mong đợi

  2. Truy vấn MongoDB so sánh 2 trường trong cùng một bộ sưu tập mà không có $ đâu

  3. Truy vấn MongoDB trên phần tử thứ n (chỉ số biến) của mảng tài liệu con

  4. Tại sao gridfs get không hoạt động trên id tệp (ObjectId) chỉ bằng tên tệp

  5. Làm thế nào để thực hiện addToSet bằng cách sử dụng trình điều khiển chính thức của Go?