gpt4 book ai didi

namespaces - Rake 默认任务和命名空间

转载 作者:行者123 更新时间:2023-12-04 22:48:18 25 4
gpt4 key购买 nike

我通读了文档并查看了很多示例,但我不清楚默认值和命名空间。 (使用 rake,版本 10.0.3)

首先,虽然我不记得明确看到这一点,但无论定义了多少个,似乎都只能有一个默认任务。显然,加载顺序 (PROJECT_NAME::Application.load_tasks) 决定了获胜者。当我努力创建命名空间默认值时,我发现有时会覆盖 Rails 应用程序的正常默认值,其中:

rake

默认运行测试。

首先是“rake -T”命令:
$ rake -T a_name
rake a_name:a_task_1 # a_task_1
rake a_name:a_task_2 # a_task_2
rake a_name:b_name:b_task_1 # b_task_1
rake a_name:b_name:b_task_2 # b_task_2
rake a_name:default # This is hopefully a namespaced default

当我只运行我希望是“默认”的命名空间时,我得到:
$ rake a_name
rake aborted!
Don't know how to build task 'a_name'

(See full trace by running task with --trace)

我期望这会在 b_name 命名空间中运行 b_task_1,因为我已将其声明为默认值

但是,如果我明确加上“默认”这个词,我会得到这个:
$  rake a_name:default
a_task_1

无论如何,我彻底糊涂了。谁能帮我澄清一下这个...
namespace :a_name do

desc "a_task_1"
task :a_task_1 do
puts "a_task_1"
end

desc "a_task_2"
task :a_task_2 do
puts "a_task_2"
end

namespace :b_name do

desc "b_task_1"
task :b_task_1 do
puts "b_task_1"
end

desc "b_task_2"
task :b_task_2 do
puts "b_task_2"
end

end

desc "This is hopefully a namespaced default"
task :default => 'b_name:b_task_1'
end

最佳答案

您可以定义与命名空间同名的任务。我认为它不像在命名空间本身内定义默认任务那么漂亮。

desc "runs bar & baz in foo"
task foo: ["foo:bar", "foo:baz"]

namespace :foo do
desc "bar in foo"
task :bar do
puts "bar"
end

desc "baz in foo"
task :baz do
puts "baz"
end
end

这就是它们被列出的方式:
rake foo                               # runs bar & baz in foo
rake foo:bar # bar in foo
rake foo:baz # baz in foo

关于namespaces - Rake 默认任务和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15106414/

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