2012-01-13 15 views
11

Nella riga di comando che posso eseguire più compiti come questoCome si eseguono più attività Rake in modo programmatico contemporaneamente?

rake environment task1 task2 task3 

Come posso fare questo a livello di codice? So che posso correre un compito come questo

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

Non si può chiamare la linea 'invoke' più di una volta? Le risposte a – Gareth

+0

implicano le risposte a questo: http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within-a-ruby-script –

risposta

14

È possibile chiamare due compiti:

require 'rake' 

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


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

Preferirei un nuovo gusto con pre requisiti:

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 

Se ho frainteso la tua domanda e si desidera eseguire la stessa operazione due volte: È possibile reenable compiti:

require 'rake' 

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

sì, credo di aver solo bisogno di invocare due attività una dopo l'altra. – codefinger

2

Fare un task rake per esso: 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 

Poi basta chiamare:

rake myjobs:do_work 
+0

Speravo di farlo senza creare un rake aggiuntivo compiti. Non sto eseguendo affatto dalla riga di comando, quindi dovrei Rake :: Task ['myjobs: do_work']. Invoke. Ci proverò. – codefinger

+0

'Rake :: Task ['myjobs: do_work']. Invoke' funziona pure. È bello consolidare le cose, IMO. Più facile da mantenere in futuro – iwasrobbed

Problemi correlati