LoginSignup
0
1

More than 1 year has passed since last update.

Rakefileでnamespace外のタスクを指定

Last updated at Posted at 2021-05-10

Rakefileでnamespaceを使ったときにハマることがあります。

  • namespaceの内と外で同じタスク名(例えばfoo)を定義
  • そのnamespaceの中から外のfooを参照したい

以下のようなことです。

Rakefile
task :foo do
  puts '外のfoo'
end

namespace :bar do
  task :foo do
     puts 'bar:foo'
  end

  task baz: [:foo] do
    puts '"外のfoo" と表示されているはず'
  end
end

しかし rake bar:baz の結果は

console
$ rake bar:baz
bar:foo
"外のfoo" と表示されているはず

つまりタスク bar:foo が外側のタスク foo をマスクします。こういうときはルートのnamespaceからのタスク名を指定(絶対指定)するか相対指定すると良いです。参照: Rakefile Format > Name Resolution

絶対指定の例を記します。ルートのnamespaceは rake ですので、タスク bar:baz の依存タスクの指定は

-  task baz: [:foo] do
+  task baz: ['rake:foo'] do

のようにすればよいです。相対指定の例は省略します。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1