2012-01-13 8 views
11

ben programlı yapabilirsiniz Bu nasılBirden çok Rake görevini aynı anda programlı olarak nasıl çalıştırırım? Komut satırında

rake environment task1 task2 task3 

gibi birden çok görevi çalıştırabilir? Ben bunun için bir tırmık görevi yapın bu

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

bir kereden 'invoke' çizgi daha arayamam? – Gareth

+0

aşağıdaki aşağıdaki yanıtları yanıtlar: http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within-a-ruby-script –

cevap

14

Sen iki görevi çağırabilirsiniz:

require 'rake' 

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


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

Öncelikle yeni bir tat tercih ederim Koşul:

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 

Sorunuzu yanlış varsa ve siz iki kez aynı görevi yürütmek istiyorum: Sen reenable görevleri yapabilirsiniz:

require 'rake' 

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

yup, sanırım sadece iki görevi birbiri ardına çağırmaya ihtiyacım vardı. – codefinger

2

gibi bir görevi çalıştırabilir biliyoruz: 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 

Sonra sadece diyoruz:

rake myjobs:do_work 
+0

Ek komisyon oluşturmadan bunu yapmayı umuyordum görevler. Komut satırından hiç kaçmıyorum, bu yüzden Rake :: Task ['myjobs: do_work'] 'e ihtiyacım vardı. Bunu deneyeceğim. – codefinger

+0

'Rake :: Görev ['myjobs: do_work']. İşleri birleştirmek güzel, IMO. Gelecekte daha kolay bakım – iwasrobbed

İlgili konular