【问题标题】:Rake custom arguments for all tasks?为所有任务获取自定义参数?
【发布时间】: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

有没有办法做到这一点?

【问题讨论】:

    标签: ruby rake arguments


    【解决方案1】:

    您可以像这样发送参数:

    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 停止将命令行解析为开关。

    【讨论】:

    • 这需要运行特定任务吗?我正在尝试在运行 rake 时无需指定任何任务来完成这项工作。例如rake -- --arg1=value
    • @Misha:-- 选项需要由每个任务处理。当通过 Rakefile 运行任务时,-- 之后的所有内容都应该在 ARGV 中可用;只要您使用 Ruby 代码,您就应该可以访问 ARGVENV
    【解决方案2】:

    这些参数通过 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 中工作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 2023-03-14
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多