How can I pass named arguments to a Rake task?

寵の児 提交于 2019-12-09 07:41:12

问题


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.


回答1:


You can say things like this:

rake some_task -- --arg=value

And then, inside your task, ARGV will be

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

so 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.



来源:https://stackoverflow.com/questions/5086224/how-can-i-pass-named-arguments-to-a-rake-task

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!