如何将命名参数传递给Rake任务?

时间:2011-02-23 01:59:59

标签: ruby arguments rake task named-parameters

有没有办法在不使用环境变量的情况下将命名参数传递给Rake任务?

我知道Rake任务可以接受两种格式的参数:

环境变量

$ rake my_task foo=bar

这会创建一个名为foo且值bar的环境变量,可以通过my_task在佣金任务ENV['foo']中访问。

佣金任务参数

$ rake my_task['foo','bar']

这会将值foobar传递给前两个任务参数(如果已定义)。如果my_task被定义为:

task :my_task, :argument_1, :argument_2

然后argument_1的值为fooargument_2的值为bar

1 个答案:

答案 0 :(得分:27)

你可以这样说:

rake some_task -- --arg=value

然后,在您的任务中,ARGV将是

[ 'some_task', '--arg=value' ]

所以你可以使用OptionParser(或其他一些选项解析器)解压缩ARGV,就像在任何旧的CLI脚本中一样;有趣的外观--是让rake试图解析--arg=like作为佣金转换所必需的。

使用标准环境变量方法可能会更好,它并不像所有--内容那样难看,而且这是将参数传递给rake任务的常用方法。