6

ドキュメントを読み、かなりの数の例を見ましたが、デフォルトと名前空間については明確ではありません。(rake、バージョン 10.0.3 を使用)

まず、これを明示的に見た覚えはありませんが、定義されているタスクの数に関係なく、デフォルト タスクは 1 つしか存在しないようです。どうやら読み込み順序 (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
4

1 に答える 1

13

名前空間と同じ名前のタスクを定義できます。私が思うに、名前空間自体の中でデフォルトのタスクを定義するほどきれいではありません。

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
于 2013-03-04T23:44:15.580 に答える