में रेक रेक कार्य चलाएं मैं अपने नियंत्रक में एक रेक कार्य चलाने के लिए चाहता हूं। क्या इसे करने का कोई तरीका है?नियंत्रक
नियंत्रक
उत्तर
मुझे कोड में रेक रेक को कॉल करने के लिए अच्छी शैली नहीं मिलती है। मैं उस कार्य के लिए कोड डालने की अनुशंसा करता हूं जिसे आप किसी रेक कार्य के बाहर कहीं निष्पादित करना चाहते हैं, और रेक कोड को इस कोड को कॉल करें।
यह न केवल बाहरी रेक (जो आप चाहते हैं) को कॉल करने में आसान होने का लाभ है, लेकिन यह रेक कार्य का परीक्षण करना भी अधिक आसान बनाता है।
+1 मैं सहमत हूं: यह उन चीजों का एक आदर्श उदाहरण है जिन्हें दो अलग-अलग तरीकों से दोबारा संशोधित किया जाना चाहिए। –
http://railscasts.com/episodes/127-rake-in-background एक रेक चलाने के लिए एक उत्कृष्ट कारण लगता है .. – baash05
"कहीं भी" कहीं भी "कहीं भी" रेक के बाहर कहीं "होगा? – user456584
आप अपने नियंत्रक में ऐसा कर सकते हैं:
%x[rake name_task]
साथ: name_task
अपने कार्य
आप इसे पर्यावरण कैसे पास करते हैं? – serengeti12
मैं उत्पादन में अपने नियंत्रक से रेक करने के लिए कभी बाहर नहीं खोलूंगा। – Duke
@Duke जब आप उत्तर देते हैं या टिप्पणी करते हैं तो क्या आप अपनी तर्क को भी समझा सकते हैं और न सिर्फ एक दावा कर सकते हैं (कि उत्पादन में नियंत्रक को रेक कार्यों को कॉल नहीं करना चाहिए)? इससे लोगों को यह जानने के बजाय लोगों को आपकी तर्क समझने में मदद मिलेगी कि आप क्या नहीं करेंगे (लेकिन क्यों नहीं बल्कि आपकी व्याख्या सुन रहे हैं)। – Matt
मैं ddfreynee से सहमत का नाम है, लेकिन मामले में आप जानते हैं कि आपको क्या चाहिए कोड की तरह लग सकता है:
require 'rake'
Rake::Task.clear # necessary to avoid tasks being loaded several times in dev mode
Sample::Application.load_tasks # providing your application name is 'sample'
class RakeController < ApplicationController
def run
Rake::Task[params[:task]].reenable # in case you're going to invoke the same task second time.
Rake::Task[params[:task]].invoke
end
end
इसके बजाय आपको प्रारंभकर्ता में 'रेक' और .load_tasks की आवश्यकता हो सकती है।
नियंत्रक में रेक कार्य को कॉल करने का प्रयास करने के बजाय, एक सेवा ऑब्जेक्ट्स को कॉल करें जिसमें आप जो भी तर्क निष्पादित करने का प्रयास कर रहे हैं उसे शामिल करें।
class SomeController < ApplicationController
def whatever
SomeServiceObject.call
end
end
... और फिर, आप यह सोचते हैं एक कस्टम रेक कार्य के बारे में बात कर रहे हैं, है यह सेवा वस्तु के रूप में अच्छी तरह से कहते हैं:
namespace :example do
desc 'important task'
task :important_task do
SomeServiceObject.call
end
end
मामले में आप वे, सेवा वस्तुओं से परिचित नहीं हैं केवल सादे पुराने रूबी वर्ग हैं जो एक विशिष्ट नौकरी करते हैं। यदि आप कुछ डिफ़ॉल्ट रेक कार्यों को कॉल करने का प्रयास कर रहे हैं (यानी: डीबी: माइग्रेट) मैं अत्यधिक नियंत्रक से उस तरह की चीज़ न करने की अनुशंसा करता हूं।
यह करने का यह एक बहुत ही साफ तरीका है। धन्यवाद। – juliangonzalez
- 1. रेल नियंत्रक बिना नियंत्रक
- 2. वेबएपी नियंत्रक नियंत्रक
- 3. नियंत्रक 0 नियंत्रक
- 4. नियंत्रक
- 5. नियंत्रक
- 6. नियंत्रक
- 7. नियंत्रक
- 8. नियंत्रक
- 9. नियंत्रक
- 10. नियंत्रक
- 11. नियंत्रक
- 12. नियंत्रक
- 13. नियंत्रक
- 14. नियंत्रक
- 15. नियंत्रक
- 16. उप नियंत्रक को मुख्य नियंत्रक
- 17. जेडएफ 2 नियंत्रक का उपयोग नियंत्रक
- 18. मिक्स वेब एपीआई नियंत्रक और साइट नियंत्रक
- 19. फॉरवर्ड नियंत्रक
- 20. कार्य नियंत्रक
- 21. रेल नियंत्रक
- 22. एक नियंत्रक
- 23. रेल नियंत्रक
- 24. आवेदन नियंत्रक
- 25. zit2 नियंत्रक
- 26. मैं नियंत्रक
- 27. कैसे नियंत्रक
- 28. ऑडियो नियंत्रक
- 29. पतला नियंत्रक
- 30. अन्य नियंत्रक
http://railscasts.com/episodes/127-rake-in-background – baash05
इसे आजमाएं >> 'सिस्टम "रेक कार्य_नाम" ' – Bongs
रायन बेट्स [कुछ तरीकों से ढंका] (http://railscasts.com/एपिसोड/127-रेक-इन-बैकग्राउंड) RailsCasts एपिसोड # 127 में। –