如何将命名参数传递给 Rake 任务?
Posted
技术标签:
【中文标题】如何将命名参数传递给 Rake 任务?【英文标题】:How can I pass named arguments to a Rake task? 【发布时间】:2011-07-02 10:55:50 【问题描述】:有没有办法在不使用环境变量的情况下将命名参数传递给 Rake 任务?
我知道 Rake 任务可以接受两种格式的参数:
环境变量
$ rake my_task foo=bar
这将创建一个名为 foo
和值 bar
的环境变量,可以在 Rake 任务 my_task
中由 ENV['foo']
访问。
Rake 任务参数
$ rake my_task['foo','bar']
这会将值 foo
和 bar
传递给前两个任务参数(如果已定义)。如果my_task
被定义为:
task :my_task, :argument_1, :argument_2
那么argument_1
的值为foo
,argument_2
的值为bar
。
【问题讨论】:
【参考方案1】:你可以这样说:
rake some_task -- --arg=value
然后,在你的任务中,ARGV
将是
[ 'some_task', '--arg=value' ]
所以你可以使用OptionParser(或其他选项解析器)解压ARGV
,就像在任何旧的CLI脚本中一样;看起来很有趣的 --
是防止 rake 尝试将 --arg=like
解析为 rake 开关所必需的。
使用标准环境变量方法可能会更好,它不像所有 --
的东西那样丑陋,而且它是向 rake 任务传递参数的常用方法。
【讨论】:
以上是关于如何将命名参数传递给 Rake 任务?的主要内容,如果未能解决你的问题,请参考以下文章
如何将参数传递给使用 Heroku Scheduler 调用的 rake 任务?