2012-09-20 20 views
8

का उपयोग करते समय देरी नौकरी में लोड नहीं होने वाले मॉडल वर्ग मुझे एक ऐसा ऐप मिला है जो लंबे समय से अच्छी तरह से काम कर रहा है। मैं थ्रेडसेफ चालू कर रहा हूं !, और अब देरी हुई नौकरी काम नहीं कर रही है, कह रही है कि यह मेरी मॉडल फाइलों में से एक नहीं ढूंढ सकती है।थ्रेडसेफ

 
Job failed to load: undefined class/module Foo 

यह है एक कस्टम काम वर्ग मैं में/lib को परिभाषित किया है नहीं, तो इस एप्लिकेशन/मॉडल

क्या इस वर्ग के कारण हो सकता है में एक मॉडल फ़ाइल लोड नहीं किया जा रहा है?

उत्तर

12

के रूप में मामले दूसरों में इस मुद्दे को आप लॉग इन पर पोस्ट, इस अतः पहले पोस्ट पाते हैं:

मैं सिर्फ इस समस्या के रूप में अच्छी तरह से मारा ... और यहाँ मैं क्या पाया है: रेल एप्लिकेशन नहीं तो उत्सुक लोड कक्षाएं करता है एक रेक कार्य के माध्यम से लोड किया जाता है (और इस तरह डीजे अपनी बात करता है)।

तो क्या मेरे द्वारा की गई मेरी production.rb में कोड के इस स्निपेट है:

# Enable threaded mode, unless a rake task (likely Delayed Job) is running: 
config.threadsafe! unless defined?($rails_rake_task) && $rails_rake_task 

रेल सेट वैश्विक चर जब यह एक रेक कार्य द्वारा लोड की जाती है कि। बदसूरत, लेकिन अब मेरे लिए ठीक काम कर रहा है ... बेशक, यदि आपके पास मल्टी-थ्रेडेड रेक कार्य हैं, तो यह आदर्श नहीं है, और आपको शायद Rails.application.eager_load का आह्वान करना चाहिए! उन कार्यों के लिए। मैं अनुमान लगा रहा हूं कि बहु-थ्रेडेड रेक कार्य दुर्लभ हैं।

+2

बस फिर वही समस्या थी और कुछ new-- '$ rails_rake_task' application.rb में सेट नहीं है की खोज की , इसलिए कोड की उपरोक्त पंक्ति को संबंधित पर्यावरण विन्यास में जाना है। –

+0

यह मेरे लिए काम किया। तो जब थ्रेडसेफ मोड में नहीं चल रहा है, तो यह मॉडल को प्रीलोड करता है? –

+0

बहुत बढ़िया, अच्छा खोज। –

0

वास्तव में संबंधित नहीं है लेकिन आज थ्रेडसेफ को सक्षम किए बिना देरी वाली नौकरी के साथ मुझे एक ही त्रुटि संदेश था।

कारण और समाधान बहुत अधिक मामूली था - हमारे सर्वर पर देरी हुई नौकरी का उपयोग करके एक और रूबी उत्पाद था और उसके कर्मचारियों ने कतार का नाम नहीं दिया था, इसलिए वे स्थापित कतार से यादृच्छिक नौकरियों को पकड़ रहे थे।

3

पैट का उपयोग रेकैक नौकरियों के लिए थ्रेडसेफ का उपयोग न करने की विधि के बाद भी मेरी नौकरियां अभी भी विफल रही थीं।

मैं निम्नलिखित मैनुअल लोडिंग तकनीक GitHub Wiki page पर पाया का उपयोग किए समाप्त हो गया:

# file: config/initializers/custom.rb 
require 'my_custom_class' 
संबंधित मुद्दे