2012-01-13 31 views
11

Tại dòng lệnh tôi có thể chạy nhiều nhiệm vụ như thế nàyLàm cách nào để chạy nhiều tác vụ Rake theo lập trình cùng một lúc?

rake environment task1 task2 task3 

Làm thế nào tôi có thể làm điều này lập trình? Tôi biết rằng tôi có thể chạy một nhiệm vụ như thế này

Rake::Task['task1'].invoke 
+1

Bạn có thể không gọi 'invoke' dòng nhiều hơn một lần? – Gareth

+0

câu trả lời cho các câu trả lời ngụ ý sau đây: http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within-a-ruby-script –

Trả lời

14

Bạn có thể gọi hai nhiệm vụ:

require 'rake' 

task :task1 do |t| 
    p t 
end 
task :task2 do |t| 
    p t 
end 


Rake::Task["task1"].invoke 
Rake::Task["task2"].invoke 

Tôi thích một sở thích mới với trước điều kiện tiên quyết:

require 'rake' 

task :task1 do |t| 
    p t 
end 
task :task2 do |t| 
    p t 
end 
desc "Common task" 
task :all => [ :task1, :task2 ] 
Rake::Task["all"].invoke 

Nếu tôi hiểu lầm câu hỏi của bạn và bạn muốn thực hiện các nhiệm vụ tương tự hai lần: Bạn có thể reenable nhiệm vụ:

require 'rake' 

task :task1 do |t| 
    p t 
end 
Rake::Task["task1"].invoke 
Rake::Task["task1"].reenable 
Rake::Task["task1"].invoke 
+0

yup, tôi đoán tôi chỉ cần thiết để gọi hai nhiệm vụ sau khi khác. – codefinger

2

Thực hiện một nhiệm vụ cào cho nó: P

# in /lib/tasks/some_file.rake 
namespace :myjobs do 
    desc "Doing work, son" 
    task :do_work => :environment do 
    Rake::Task['resque:work'].invoke 
    start_some_other_task 
    end 

    def start_some_other_task 
    # custom code here 
    end 
end 

Sau đó chỉ cần gọi nó là:

rake myjobs:do_work 
+0

Tôi đã hy vọng làm điều đó mà không cần tạo thêm cào nhiệm vụ. Tôi không chạy từ dòng lệnh, vì vậy tôi sẽ phải Rake :: Task ['myjobs: do_work']. Tôi sẽ thử cái này. – codefinger

+0

'Rake :: Task ['myjobs: do_work']. Gọi 'cũng hoạt động. Chỉ cần hợp nhất mọi thứ, IMO. Dễ dàng hơn để duy trì trong tương lai – iwasrobbed

Các vấn đề liên quan