rspec

2012-12-04 17 views
10

में एक रेक कार्य को कॉल करने के लिए कैसे मैं अपने rspec में एक रेक कार्य करने का प्रयास कर रहा हूं।rspec

require "rake" 
    rake = Rake::Application.new 
    Rake.application = rake 
    rake.init 
    rake.load_rakefile 
    rake['rake my:task'].invoke 

लेकिन मैं त्रुटि

Failure/Error: rake['rake db:migrate'].invoke 
RuntimeError: 
    Don't know how to build task 'rake db:migrate' 

हो रही है किसी को भी एक विचार है कि हम कैसे rspec कोड में रेक कार्य आह्वान कर सकते हैं है।

किसी भी मदद की अत्यधिक सराहना की जाएगी।

उत्तर

3

invoke को वर्ग कोष्ठक में बहस में पारित करने के लिए:

rake sim:manual_review_referral_program[3,4] 

हो जाता है:

तो
rake['sim:manual_review_referral_program'].invoke(3,4) 

अपने args हैं एक सरणी में, आप निम्न कार्य कर सकते हैं:

args = [3,4] 
rake['sim:manual_review_referral_program'].invoke(*args) 

इस स्टैक ओवरव्लो प्रश्न पर अधिक जानकारी: How to run Rake tasks from within Rake tasks?

12

छोटे नामकरण मुद्दे, कार्य db:migraterake db:migrate कमांड लाइन उपयोग की तरह है।

तो यह करने के लिए इसे बदलने की मदद करनी चाहिए:

rake['db:migrate'].invoke 
+0

बहुत बहुत धन्यवाद। यह वास्तव में कारगर है। अब मेरे पास मेरा कस्टम रेक कार्य है जो 'lib/works /' फ़ोल्डर में परिभाषित किया गया है। मैं इसे rspec से कैसे चला सकता हूं? – MKumar

+0

'lib/functions' फ़ोल्डर में '.rake' एक्सटेंशन वाला कुछ भी डिफ़ॉल्ट रूप से शामिल किया जाएगा। चूंकि आपका रेकफाइल शायद रेल से आया है, इसलिए कार्य को लोड और उपलब्ध होना चाहिए। – stuartc

+0

त्रुटि से नीचे असफलता विफलता/त्रुटि: रेक ['सिम: manual_review_referral_program [3]']। का आह्वान करें RuntimeError: कार्य को सिम बनाने के बारे में नहीं पता: सिम: manual_review_referral_program [3] ' – MKumar

10

Rspec के साथ रेल के लिए एक सरल समाधान:

में अपने spec_helper (या rspec-रेल के नए संस्करण के लिए rails_helper):

require "rake" 
Rails.application.load_tasks 

फिर जब आप अपने कार्य को प्रारंभ करने के लिए चाहते हैं आप कर सकते हैं निम्नलिखित:

Rake::Task['my:task'].invoke