delayedjob مع acts_as_ferret في وضع الإنتاج
-
16-09-2019 - |
سؤال
أحصل على الخطأ التالي عند تشغيل مهمتي عبر DifiedJob:
closed stream
/usr/lib/ruby/1.8/drb/drb.rb:961:in `select'
/usr/lib/ruby/1.8/drb/drb.rb:961:in `alive?'
/usr/lib/ruby/1.8/drb/drb.rb:1211:in `alive?'
/usr/lib/ruby/1.8/drb/drb.rb:1168:in `open'
/usr/lib/ruby/1.8/drb/drb.rb:1166:in `each'
/usr/lib/ruby/1.8/drb/drb.rb:1166:in `open'
/usr/lib/ruby/1.8/drb/drb.rb:1163:in `synchronize'
/usr/lib/ruby/1.8/drb/drb.rb:1163:in `open'
/usr/lib/ruby/1.8/drb/drb.rb:1092:in `method_missing'
/usr/lib/ruby/1.8/drb/drb.rb:1110:in `with_friend'
/usr/lib/ruby/1.8/drb/drb.rb:1091:in `method_missing'
/usr/lib/ruby/gems/1.8/gems/acts_as_ferret-0.4.3/lib/remote_index.rb:31:in `<<'
/usr/lib/ruby/gems/1.8/gems/acts_as_ferret-0.4.3/lib/instance_methods.rb:90:in `ferret_update'
...
من الخطأ الذي كان واضحا أن Delayped_job تعذر العثور على ferret_server. ومع ذلك، عندما أقوم بتشغيل هذه المهمة نفسها من وحدة التحكم في وضع الإنتاج، فإنه يعمل بشكل جيد. أي أفكار كيف يمكنني التأكد من أن Delayed_job لديه:
حقا تحميل بيئة الإنتاج. قمت بتعيين القضبان ['ENV]] = "الإنتاج" في البرنامج النصي / Delayed_job للتأكد من ذلك. (أعتقد أن هذا يجب أن يكون جيدا)
حصلت النمس تكوينها عبر النماذج؟
المحلول
هذا ما حدث لي أيضا. تحتاج إلى تعطيل النمس من الفهرسة أثناء تشغيل المهمة المتأخرة.
في تعريف العمال الخاص بك (شيء مثل Rails_root / Lib / Worker.rb)، وبالنظر إلى نموذج يسمى المشاركة، يجب عليك تضمين خط مثل هذا:
class Worker < Struct.new(:stuff)
def perform
Post.disable_ferret
<do some stuff>
.
.
.
end
end
لا تنتمي إلى StackOverflow