Tôi có ứng dụng Rails 3 trong sản xuất với Passenger trên Apache. Tôi có mã này:Dùng fork trong Ruby on Rails để tạo quy trình song song
class Billing < ActiveRecord::Base
after_save :sendEmails
private
def sendEmails
fork do
UserMailer.clientBilling(self.user, self).deliver
end
end
end
Trong localhost, khi ứng dụng tạo một thanh toán, sau khi lưu, ứng dụng sẽ gửi email cho người dùng, mọi thứ hoạt động tốt. Nhưng trong máy chủ, sau khi ứng dụng tạo thanh toán, nó ném cho tôi các lỗi liên quan đến đá quý MySQL2, lỗi như "Máy chủ MySQL đã biến mất" hoặc "Mất kết nối" và ứng dụng không gửi email. Nếu tôi loại bỏ các ngã ba nó hoạt động tốt, nhưng tôi muốn sử dụng ngã ba, tôi muốn tạo ra một quá trình tách biệt bởi vì nó cần đến lâu khi gửi email. Điều gì có thể là vấn đề?
bạn có biết tài nguyên nào được kế thừa không? tôi nghĩ rằng một ngã ba quá trình sao chép toàn bộ quá trình? không phải là toàn bộ môi trường đường ray được nạp lại trên một ngã ba? –
Nó sao chép toàn bộ quá trình, nhưng các bộ mô tả tập tin tham chiếu đến cùng một tập tin (xem trang hướng dẫn sử dụng) –
Tôi thấy rằng 'setup_connection' không phải lúc nào cũng cần thiết vì ActiveRecord thường quản lý minh bạch này. – spume