为所有任务获取自定义参数?
我想将一个参数传递给 rake ,而与我运行的任务无关。
例如:
rake my_arg=foo
rake my_arg=foo :install
rake my_arg=foo :upgrade
rake my_arg=foo :bar
有没有办法做到这一点?
I want to pass in an argument to rake independent of the task I run.
For example:
rake my_arg=foo
rake my_arg=foo :install
rake my_arg=foo :upgrade
rake my_arg=foo :bar
Is there a way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以像这样发送参数:
然后从 rake 任务中的
ENV
中提取命名参数:您还可以提供更传统的命令行开关,如下所示:
然后使用 OptionParser (或其他一些选项解析器)来解压
ARGV.如果您想使用开关,请不要忘记额外的
--
,它会告诉rake
停止将命令行解析为开关。You can send arguments in like this:
Then pull the named parameters out of
ENV
inside your rake task:You can also supply more traditional command line switches like this:
And then use OptionParser (or some other option parser) to unpack
ARGV
. Don't forget the extra--
if you want to use switches, that will tellrake
to stop parsing the command line as switches.这些参数被rake放入
ENV[]
中,模拟环境变量。因此,您可以只使用实际的环境变量。例如:由于您可以传递 rake 命令列表,因此即使它不是对原始问题的直接答案,您也可以执行此操作:
These arguments are put into
ENV[]
by rake, simulating environment variables. As such, you can just use actual environment variables instead. For instance:Since you can pass a list of rake commands, you could also do this even though it isn't a direct answer to your original question: