【问题标题】:Rake Default Task and NamespacesRake 默认任务和命名空间
【发布时间】:2013-02-27 07:29:16
【问题描述】:

我已通读文档并查看了很多示例,但我不清楚默认值和命名空间。 (使用 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

【问题讨论】:

标签: namespaces rake task default


【解决方案1】:

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

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

【讨论】:

  • 经过我自己的更多实验,这基本上是我想出的。所以在这一点上,我认为这是实现我想要的最好的方式,
猜你喜欢
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
相关资源
最近更新 更多