Как запустить несколько программ Rake одновременно? - PullRequest
13 голосов
/ 14 января 2012

В командной строке я могу запустить несколько задач, подобных этой

rake environment task1 task2 task3

Как я могу сделать это программно? Я знаю, что могу выполнить одну задачу, подобную этой

Rake::Task['task1'].invoke

Ответы [ 2 ]

16 голосов
/ 14 января 2012

Вы можете вызвать две задачи:

require 'rake'

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


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

Я бы предпочел новый вкус с предпосылками:

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

Если я неправильно понял ваш вопрос и вы хотите выполнить одно и то же задание дважды: вы можете reenable заданий:

require 'rake'

task :task1 do |t|
  p t
end
Rake::Task["task1"].invoke
Rake::Task["task1"].reenable
Rake::Task["task1"].invoke
2 голосов
/ 14 января 2012

Создайте для него задание на рейк: 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

Затем просто назовите его:

rake myjobs:do_work
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...