我如何将命名参数传递给Rake任务?
有没有办法将命名参数传递给Rake任务而不使用环境变量?
我知道Rake任务可以接受两种格式的参数:
环境变量
$ rake my_task foo=bar
这将创建一个名为foo
的环境变量以及可通过ENV['foo']
在Rake任务my_task
访问的值bar
。
Rake任务参数
$ rake my_task['foo','bar']
这将值foo
和bar
传递给前两个任务参数(如果已定义)。 如果my_task
被定义为:
task :my_task, :argument_1, :argument_2
那么argument_1
将具有值foo
和argument_2
将具有值bar
。
你可以这样说:
rake some_task -- --arg=value
然后,在你的任务中, ARGV
将会
[ 'some_task', '--arg=value' ]
所以你可以使用OptionParser(或其他选项解析器)来解压缩ARGV
,就像在任何旧的CLI脚本中一样; 有趣的看起来--
有必要保持耙子试图解析--arg=like
作为耙开关。
你很可能与标准的环境变量的方法更好,它并不像所有的丑陋--
东西,它是传递参数给耙任务的常用方法。