使用rake任务接受参数作为先决条件

Mik*_*ike 8 ruby rake

根据http://rake.rubyforge.org/files/doc/rakefile_rdoc.html,您可以创建一个接受参数并具有先决条件的任务:

task :name, [:first_name, :last_name] => [:pre_name] do |t, args|
Run Code Online (Sandbox Code Playgroud)

但是如果:pre_name是一个也接受参数的任务呢?将参数传递给它时的语法是什么:pre_name用作先决条件?

Gre*_*zky 9

它实际上非常简单 - :pre任务将接收与原始任务相同的参数.您需要做的就是确保签名类似 - 例如,如果第一个任务收到:a,:b:前任务也需要接收它们.

在这里查看更多:rake with params


Pau*_*nch 0

我没有直接的答案,但我确实有一个可能适合您的替代解决方案。我的 rake 任务都不使用参数。(我想我尝试使用参数,但无法让它们工作。)相反,我依赖 ENV 数组。因此,例如,我会将示例任务写为:

task :name =>:pre_name do
  do_something_with_name(ENV['first_name'], ENV['last_name'])
end
Run Code Online (Sandbox Code Playgroud)

它将被调用为:

$ rake name first_name=John last_name=Smith
Run Code Online (Sandbox Code Playgroud)

ENV 数组数据也可用于 pre_name 任务。