रेक कार्य चलाने के तरीके


95

मैं टर्मिनल / कंसोल में इस रेक फ़ाइल को कैसे चलाऊँ?

मेरे स्टेटिस्टिक.ब्रैक लिब / टास्क में

desc "Importer statistikker"
namespace :reklamer do
  task :iqmedier => :environment do
    ...
  end
  task :euroads => :environment do
    ...
  end
  task :mikkelsen => :environment do
    ...
  end
  task :orville => :environment do
    ...
  end
end

जवाबों:


132

आप अपने शेल से रेक कार्य चला सकते हैं:

rake task_name

रूबी से चलाने के लिए (जैसे, रेल कंसोल या अन्य रेक कार्य में):

Rake::Task['task_name'].invoke

एक ही कार्य के साथ एक ही नामस्थान में कई कार्य चलाने के लिए, अपने नाम स्थान में निम्नलिखित नया कार्य बनाएँ:

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville] do
  # This will run after all those tasks have run
end

1
मैं एक ही बार में सभी कार्यों को कैसे रेक करूं या मुझे नाम स्थान को किसी कार्य में बदलने की आवश्यकता है?
रेल्स शुरुआत

1
यदि आप एक ही बार में सभी कार्य चलाना चाहते हैं: सभी => [: a:: b,: c] और फिर रेक रेकलेमर चलाएं: सभी
स्पाइक ग्रोनिम

1
यह आपके प्रश्न का हिस्सा नहीं था, लेकिन आपको एक नया कार्य करना होगा जो उनमें से प्रत्येक को कहता है, जिसके लिए एक आशुलिपि है। देखिये मेरा अपडेटेड जवाब।
एंड्रयू मार्शल

1
@Andrew मार्शल, btw, आप का उपयोग कर सकते हैं task :runall => Rake::Task.tasksयदि आप सभी कार्यों को चलाना चाहते हैं। लेकिन इस लाइन को सभी कार्यों के बाद घोषित किया जाना चाहिए।
वासिली एर्मोलोविच

कार्य कहां होना चाहिए: रनॉल => जाना?
रेल्स शुरुआत

25
Rake::Task['reklamer:orville'].invoke

या

Rake::Task['reklamer:orville'].invoke(args)

यह दृष्टिकोण काम करेगा, लेकिन raks कार्यों को बंडल करने का "सही" तरीका @ andrew-marshall द्वारा उत्तर दिया गया था।
टॉम हैरिसन

3
कृपया संदर्भ प्रदान करें यदि आप "सही" तरीके से कुछ कहने जा रहे हैं ... '। मेरा उत्तर मूल प्रश्न का उत्तर था।
ल्यूक डब्ल्यू

3
एक सैद्धांतिक परीक्षण के रूप में, मैंने दौड़ने की कोशिश की, Rake::Task['db:seed'].invokeलेकिन यह नहीं कहा कि "टास्क 'डीबी: सीड' का निर्माण कैसे करना है, यह मत जानो"
lulalala

22

क्या आपने कोशिश की है rake reklamer:iqmedier?

मेरे कस्टम रेक कार्य लिब / कार्य में नहीं, लिबास डायरेक्टरी में हैं। यकीन नहीं होता कि क्या मायने रखता है।


1
मैं एक ही बार में सभी कार्यों को चलाना चाहता हूं
रेल्स

13

कभी-कभी आपके रेक कार्य कंसोल में लोड नहीं होते हैं, उस स्थिति में आप निम्न आदेशों को आज़मा सकते हैं

require "rake"
YourApp::Application.load_tasks
Rake::Task["Namespace:task"].invoke

वे उद्धरण बुरे हैं, लेकिन मैं उन्हें संपादित नहीं कर सकता क्योंकि यह बहुत छोटा है एक संपादन!
nroose

हालांकि यह पूछे गए सवाल का वास्तविक जवाब नहीं है। यह वही है जो मैं अपनी समस्या को ढूंढ रहा हूं और हल कर रहा हूं (YourApp :: Application.load_tasks)। धन्यवाद!
डेनिस वैन डे होफ

4

यदि आप सुनिश्चित नहीं हैं कि एक रेक कार्य कैसे चलाया जाए, तो पहले यह पता करें कि आपके पास कौन से कार्य हैं और यह कार्यों को चलाने के लिए कमांड्स को भी सूचीबद्ध करेगा।

rake --tasksटर्मिनल पर चलाएं ।

यह निम्नलिखित जैसे कार्यों को सूचीबद्ध करेगा:

rake gobble:dev:prime             
rake gobble:dev:reset_number_of_kits                                    
rake gobble:dev:scrub_prod_data

आप इसके बाद अपना काम चला सकते हैं: rake gobble:dev:primeजैसा कि सूचीबद्ध है।


1

रेल में 4.2 उपरोक्त तरीके काम नहीं करते।

  1. टर्मिनल पर जाएं।
  2. निर्देशिका को उस स्थान पर बदलें जहां आपकी रेक फ़ाइल मौजूद है।
  3. rake task_name चलाएं।
  4. उपरोक्त मामले में, रन रेक iqmedier - केवल iqmedir कार्य चलाएगा।
  5. रन रेक यूरोडैस - केवल यूरोड्स टास्क चलाएगा
  6. उस फ़ाइल के सभी कार्यों को चलाने के लिए उसी फ़ाइल के अंदर निम्नलिखित असाइन करें और सभी को रेक चलाएं

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.