Аргументы передаются через стек вызовов. Вам просто нужно убедиться, что ваша задача верхнего уровня захватывает все аргументы, необходимые для всех зависимостей. В вашем случае вы захотите поместить first_name
и last_name
в задачу send_letter
.
Вот пример, который показывает именованные аргументы, определенные в другом месте, которые входят в зависимость (даже если они не определены в зависимости), но аргумент, который не соответствует имени аргумента задачи верхнего уровня, равен nil.
desc 'Bar'
task :bar, :nom do |task, args|
puts "BAR NOM: #{args[:nom]}"
puts "BAR NAME: #{args[:name]}"
end
desc 'Foo'
task :foo, [:name] => :bar do |task, args|
puts "FOO NAME: #{args[:name]}"
end
Бег rake foo[baz]
урожай
BAR NOM:
BAR NAME: baz
FOO NAME: baz
Интересно отметить, что использование args.with_defaults(nom: 'Jaques')
в задаче foo
не влияет на зависимую задачу - nom
по-прежнему равен нулю.
Версия рейка: rake, version 10.0.3
Рубиновая версия: ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]