Tengo una aplicación Rails 3 en producción con Passenger on Apache. Tengo este código:Uso de un tenedor en Ruby on Rails para crear el proceso paralelo
class Billing < ActiveRecord::Base
after_save :sendEmails
private
def sendEmails
fork do
UserMailer.clientBilling(self.user, self).deliver
end
end
end
En localhost, cuando la aplicación crea una factura, una vez guardado, la aplicación envía un correo electrónico al usuario, todo funciona bien. Pero en el servidor, después de que la aplicación crea una factura, me arroja errores relacionados con la gema MySQL2, errores como "El servidor MySQL se ha ido" o "Conexión perdida", y la aplicación no envía los correos electrónicos. Si elimino la horquilla, funciona bien, pero quiero usar horquilla, quiero crear un proceso separado porque tarda mucho en enviar correos electrónicos. ¿Cual podría ser el problema?
¿sabes qué recursos se heredan? Pensé que un fork de proceso copiaba todo el proceso. ¿No está todo el entorno de los rieles cargado de nuevo en un tenedor? –
Copia todo el proceso, pero los descriptores de archivo hacen referencia al mismo archivo (consulte la página de manual para el tenedor) –
He descubierto que 'establish_connection' no siempre es necesario ya que ActiveRecord generalmente lo administra de forma transparente. – spume