如何将命名参数传递给 Rake 任务?
有没有一种方法可以在不使用环境变量的情况下将命名参数传递给 Rake 任务?
我知道 Rake 任务可以接受两种格式的参数:
环境变量
$ rake my_task foo=bar
这将创建一个名为 foo
和值 bar
的环境变量可以通过 ENV['foo']
在 Rake 任务 my_task
中访问。
Rake 任务参数
$ rake my_task['foo','bar']
这会将值 foo
和 bar
传递给前两个任务参数(如果已定义)。如果 my_task
定义为:
task :my_task, :argument_1, :argument_2
则 argument_1
的值为 foo
,argument_2
的值为 栏
。
Is there a way to pass named arguments to a Rake task without using environment variables?
I am aware that Rake tasks can accept arguments in two formats:
Environment Variables
$ rake my_task foo=bar
This creates an environment variable with the name foo
and the value bar
that can be accessed in the Rake task my_task
by ENV['foo']
.
Rake Task Arguments
$ rake my_task['foo','bar']
This passes the values foo
and bar
to the first two task arguments (if they are defined). If my_task
were defined as:
task :my_task, :argument_1, :argument_2
then argument_1
would have the value foo
and argument_2
would have the value bar
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你可以这样说:
然后,在你的任务中,
ARGV
将是这样你可以使用OptionParser (或其他一些选项解析器)来解压
ARGV
就像在任何旧的 CLI 脚本中一样;看起来有趣的--
是防止 rake 尝试将--arg=like
解析为 rake 开关所必需的。使用标准环境变量方法可能会更好,它不像所有
--
东西那么难看,而且它是向 rake 任务传递参数的常用方法。You can say things like this:
And then, inside your task,
ARGV
will beso you could use OptionParser (or some other option parser) to unpack
ARGV
just like in any old CLI script; the funny looking--
is necessary to keep rake from trying to parse--arg=like
as a rake switch.You're probably better off with the standard environment variable approach, it isn't as ugly as all the
--
stuff and it is the usual way of passing arguments to rake tasks.