为所有任务耙自定义参数?

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

例如:

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

有没有办法做到这一点?

您可以像这样发送参数:

 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停止解析命令行作为开关。

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

 export my_arg=foo rake install upgrade bar 

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

 rake my_arg=foo install upgrade bar