मैं अपने रेल ऐप की शुरुआत में स्वचालित रूप से पृष्ठभूमि थ्रेड लॉन्च करना चाहता हूं और इसे स्टॉप पर समाप्त करना चाहता हूं (देव मोड में Ctrl + C या उत्पादन में सिग्नल को मारना)
मुझे शुरुआत में अपना धागा लॉन्च करने में कोई समस्या नहीं है, लेकिन मैं इसे स्टॉप पर समाप्त करने का प्रबंधन नहीं कर सकता। या तो यह रुकता नहीं है, या तो यह मेरे रेल ऐप को छोड़ने से रोकता है।
क्या कोई स्वचालित तरीका है? या क्या मुझे रेल को हुक करना बंद कर देना चाहिए? कैसे ?
आपकी सलाह के लिए अग्रिम धन्यवाद।
पी.एस. वैसे, क्या आप रेल थ्रेड की "पिड" सुविधा का उपयोग करना जानते हैं? मेरा मतलब है कि शुरुआत में tmp/pids में एक छोटी टेक्स्ट फ़ाइल डालने और इसे स्वचालित रूप से हटाने का तरीका। मुझे यकीन है कि ऐसा करने के लिए कुछ कार्य हैं।
2 जवाब
(पुराना प्रश्न, लेकिन मुझे अनुत्तरित प्रश्न पसंद नहीं हैं ;-)
ऐसा करने का एक सुविधाजनक तरीका "फाइनलाइज़र" को रेल "इनिशियलाइज़र" के समान सेट करना है। फिर आप इनिशियलाइज़र में थ्रेड लॉन्च कर सकते हैं और उन्हें फ़ाइनलाइज़र में बंद कर सकते हैं।
- "config/initializers" निर्देशिका के पास एक "कॉन्फ़िगर/फ़ाइनलाइज़र" निर्देशिका बनाएं।
- इस कोड को प्रारंभकर्ता में रखें:
(हम "बाहर निकलने पर" रूबी का उपयोग करते हैं, cf। रेल के लिए शटडाउन हुक)
at_exit do
finalizer_files = File.join(::Rails.root.to_s, "config/finalizers/*.rb")
Dir.glob(finalizer_files).sort.each do |finalizer_file|
require finalizer_file
end
end
3. फिर हम "फाइनलाइज़र" में कुछ इस तरह का उपयोग कर सकते हैं: (यहां हम "वर्कर्स" को इनिशियलाइज़र में लॉन्च करने का प्रयास करते हैं)
if Settings.web_app.engine.workers_count != 0 && Settings.web_app.engine.auto_manage_workers then
puts ' * Automatic shutdown of workers'
...
end
क्या आपने शुरुआत में अपने ऐप को लपेटने की कोशिश की है..इस तरह सुनिश्चित करें:
begin
thread = start_thread
rest_of_app
ensure
thread.kill
end
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
ruby-on-rails
रूबी ऑन रेल्स रूबी में लिखा गया एक ओपन सोर्स फुल-स्टैक वेब एप्लिकेशन फ्रेमवर्क है। यह लोकप्रिय एमवीसी फ्रेमवर्क मॉडल का अनुसरण करता है और इसे "कॉन्फिगरेशन ओवर कॉन्फिगरेशन" अप्रोच डेवलपमेंट के दृष्टिकोण के लिए जाना जाता है।