Как запустить несколько граблей параллельно с ruby ​​script

У меня есть ruby ​​ script, из которого я хочу запустить четыре рейк-задачи для параллельной работы.

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

Ответ 1

Лучше, если вы разрешите Rake обрабатывать parallelism. Вы можете сделать это, используя "многозадачность". Внутри Rakefile:

desc "Start everything."
multitask :start => [ 'mongodb:start', 'haystack:start' ]

Фон и источник.

В противном случае, полагая, что вы делаете это из-за пределов Rakefile, вы можете использовать такой ужасный код, который бы не выдавал исключений, как вы могли ожидать, и может легко потерпеть неудачу несколькими способами:

require 'rake'
load 'Rakefile'

def invoke(name)
  Thread.new do
    puts Rake::application[name].invoke
  end
end

invoke :make_coffee
invoke :boil_eggs
invoke :empty_trash

(так что не делайте этого)

Ответ 4

make имеет аналогичную функцию (-j), которая позволяет запускать несколько задач параллельно.

существует запрос на растяжение, чтобы эта функция была доступна в rake: https://github.com/jimweirich/rake/pull/113

и вилка рейка с -j реализована: https://github.com/quix/rake