Вы можете использовать invoke
и reenable
для повторного выполнения задачи.
Ваш пример вызова rake blog:post Title
, кажется, имеет параметр. Этот параметр можно использовать как параметр в invoke
:
Пример:
require 'rake'
task 'mytask', :title do |tsk, args|
p "called #{tsk} (#{args[:title]})"
end
Rake.application['mytask'].invoke('one')
Rake.application['mytask'].reenable
Rake.application['mytask'].invoke('two')
Пожалуйста, замените mytask
на blog:post
, и вместо определения задачи вы можете require
ваш rakefile.
Это решение запишет результат в stdout - но вы не упомянули, что хотите подавить вывод.
Интересный эксперимент:
Вы можете вызвать reenable
также внутри определения задачи. Это позволяет заданию повторно включить себя.
Пример: * * тысяча двадцать-пять
require 'rake'
task 'mytask', :title do |tsk, args|
p "called #{tsk} (#{args[:title]})"
tsk.reenable #<-- HERE
end
Rake.application['mytask'].invoke('one')
Rake.application['mytask'].invoke('two')
Результат (протестирован с граблями 10.4.2):
"called mytask (one)"
"called mytask (two)"