为所有任务耙定制参数?

时间:2011-04-05 22:26:45

标签: ruby rake arguments

我想传递一个参数rake独立于我运行的任务。

例如:

rake my_arg=foo
rake my_arg=foo :install
rake my_arg=foo :upgrade
rake my_arg=foo :bar

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:5)

您可以像这样发送参数:

rake some_task arg1=value arg2=value

然后在rake任务中从ENV中拉出命名参数:

arg1 = ENV['arg1']
arg2 = ENV['arg2']

您还可以提供更多传统的命令行开关:

rake some_task -- --arg1=value --arg2=value

然后使用OptionParser(或其他一些选项解析器)解包ARGV。如果您想使用开关,请不要忘记额外的 -- ,这会告诉rake停止将命令行解析为开关。

答案 1 :(得分:1)

这些参数通过rake放入ENV[],模拟环境变量。因此,您可以使用实际的环境变量。例如:

export my_arg=foo
rake install upgrade bar

由于你可以传递一个rake命令列表,你也可以这样做,即使它不是你原来问题的直接答案:

rake my_arg=foo install upgrade bar