Üretimde Radar 3 uygulamasında Apache'de Yolcu ile var. Bu kodu vardır: uygulaması bir fatura oluşturduğunda bunu kaydedildikten sonra, uygulama kullanıcıya bir e-posta gönderirParalel işlem oluşturmak için Ruby on Rails çatalı kullanımı
localhost olarakclass Billing < ActiveRecord::Base
after_save :sendEmails
private
def sendEmails
fork do
UserMailer.clientBilling(self.user, self).deliver
end
end
end
, her şey gayet iyi çalışıyor. Ama sunucuda, uygulama bir fatura oluşturduktan sonra, bana MySQL2, "MySQL sunucusu gitti" veya "Bağlantı kayboldu" gibi hatalar ile ilgili hataları atar ve uygulama e-postaları göndermez. Çatalları çıkarırsam iyi çalışır, ancak çatal kullanmak istiyorum, e-posta gönderirken uzun zaman alacağı için ayrı bir işlem oluşturmak istiyorum. Sorun ne olabilir?
Hangi kaynakların devraldığını biliyor musunuz? Süreç çatalı tüm süreci kopyalar mı? Bütün raylar çevre bir çatalda tekrar yüklenmedi mi? –
Tüm süreci kopyalar, ancak dosya tanıtıcıları aynı dosyaya başvururlar (fork için man sayfasına bakınız) –
ActiveRecord'un genellikle bunu şeffaf olarak yöneteceğinden, 'build_connection' her zaman gerekli olmadığını buldum. – spume