gpt4 book ai didi

ruby - 在不指定任务名称的情况下将参数传递给 Rake 默认任务

转载 作者:数据小太阳 更新时间:2023-10-29 08:00:13 46 4
gpt4 key购买 nike

使用任务依赖表示法,您可以将参数传递给默认任务。例如,说“版本”是你的论点:

task :default, [:version] => [:build]

task :build, :version do |t,args|
version = args[:version]
puts version ? "version is #{version}" : "no version passed"
end

然后你可以这样调用它:

$ rake
no version passed

$ rake default[3.2.1]
version is 3.2.1

$ rake build[3.2.1]
version is 3.2.1

但是,我还没有找到一种方法来避免在传递参数时指定任务名称(默认或构建)。

有谁知道使用这种表示法而不必指定任务名称的方法吗? (即也利用“默认”语法?)

我知道接收参数的 ENV[] 方法,如下所述: How do I have the :default Rake task depend on a task with arguments?

我正在寻找一种方法来使用内置符号(如上所示)但避免必须指定任务名称。

最佳答案

如果您查看 rake 源代码,您会发现这是不可能的 (GitHub):

# Collect the list of tasks on the command line.  If no tasks are
# given, return a list containing only the default task.
# Environmental assignments are processed at this time as well.
def collect_tasks
@top_level_tasks = []
ARGV.each do |arg|
if arg =~ /^(\w+)=(.*)$/m
ENV[$1] = $2
else
@top_level_tasks << arg unless arg =~ /^-/
end
end
@top_level_tasks.push(default_task_name) if @top_level_tasks.empty?
end

在这个方法中,要运行的任务是从提供的参数中收集的。以 - 开头的所有内容都将被忽略,foo=bar 形式的所有内容都用于设置环境,其他所有内容都被视为任务名称。

如果您指定带参数的任务 (foo[bar]),则参数在 parse_task_string 中解析.

如果您未指定任务,则使用不带任何参数的default

关于ruby - 在不指定任务名称的情况下将参数传递给 Rake 默认任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481581/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com