【发布时间】:2011-07-30 09:08:55
【问题描述】:
我想传入一个独立于我运行的任务的 rake 参数。
例如:
rake my_arg=foo
rake my_arg=foo :install
rake my_arg=foo :upgrade
rake my_arg=foo :bar
有没有办法做到这一点?
【问题讨论】:
我想传入一个独立于我运行的任务的 rake 参数。
例如:
rake my_arg=foo
rake my_arg=foo :install
rake my_arg=foo :upgrade
rake my_arg=foo :bar
有没有办法做到这一点?
【问题讨论】:
您可以像这样发送参数:
rake some_task arg1=value arg2=value
然后将命名参数从您的 rake 任务中的ENV 中提取出来:
arg1 = ENV['arg1']
arg2 = ENV['arg2']
您还可以像这样提供更传统的命令行开关:
rake some_task -- --arg1=value --arg2=value
然后使用OptionParser(或其他选项解析器)解压ARGV。如果你想使用开关,不要忘记额外的 --,它会告诉rake 停止将命令行解析为开关。
【讨论】:
-- 选项需要由每个任务处理。当通过 Rakefile 运行任务时,-- 之后的所有内容都应该在 ARGV 中可用;只要您使用 Ruby 代码,您就应该可以访问 ARGV 和 ENV。
这些参数通过 rake 放入ENV[],模拟环境变量。因此,您可以只使用实际的环境变量。例如:
export my_arg=foo
rake install upgrade bar
由于您可以传递 rake 命令列表,因此您也可以这样做,即使它不是对原始问题的直接回答:
rake my_arg=foo install upgrade bar
【讨论】:
rake my_arg=foo install upgrade bar 如何在 Rakefile 中工作?