У меня есть задача Rake, которую я упростил ниже. Я использую Ruby 1.9 для Windows.Почему Rake не может последовательно вызывать несколько задач?
Возможно, вы хотели бы угадать результат вызова задачи Rake «list_all_levels» ниже? Оно должно быть:
"Hello level 1"
"Hello level 2"
"Hello level 3"
Но по неизвестным причинам для меня, он печатает только «Hello уровень 1», а затем останавливается.
То есть, он всегда вызывает только первую задачу. Если я изменил первую строку, чтобы передать аргумент «42», он напечатает «Hello level 42», а затем остановится.
Мне интересно, почему он не вызов задачи 3 раза и печать всех 3 строк? И есть ли способ заставить его работать так, как я ожидал бы?
task :list_all_levels => [] do
Rake::Task[:list].invoke 1
Rake::Task[:list].invoke 2
Rake::Task[:list].invoke 3
end
task :list, [:level] => [] do |t, args|
puts "Hello level #{args.level}"
end
Это действительно спасло мой день, спасибо! – kizzx2
Будьте осторожны, если вы меняете его на 'execute' @PandaWood, поскольку они не совсем одинаковы => [rake execute vs invoke] (http://chrisroos.co.uk/blog/2007-12-06-ruby-rake -invoke-vs-execute) – Ron
Это кажется мне очень интуитивно понятным. Любые идеи, почему они сделали это так? – marcovtwout