class Rake::InvocationChain

要約

循環したタスクの呼び出しを検出するためのクラスです。

例:

a = Rake::InvocationChain::EMPTY
b = a.append('task_a').append('task_b')
p b.to_s  # => "TOP => task_a => task_b"

a.append('task_a').append('task_b').append('task_a') # => 例外発生

目次

特異メソッド
インスタンスメソッド
定数

特異メソッド

append(task_name, chain) -> Rake::InvocationChain[permalink][rdoc]

与えられたタスク名を第二引数の Rake::InvocationChain に追加します。

[PARAM] task_name:
タスク名を指定します。
[PARAM] chain:
既に存在する Rake::InvocationChain のインスタンスを指定します。

# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  chain = Rake::InvocationChain::EMPTY
  b = Rake::InvocationChain.append("task_a", chain)
  b.to_s # => "TOP => task_a"
end
new(task_name, tail)[permalink][rdoc]

与えられたタスク名と一つ前の Rake::InvocationChain を用いて自身を初期化します。

[PARAM] task_name:
タスク名を指定します。
[PARAM] tail:
一つ前の Rake::InvocationChain を指定します。

# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  tail = Rake::InvocationChain.new("task_a", Rake::InvocationChain::EMPTY)
  tail.to_s # => "TOP => task_a"
  b = Rake::InvocationChain.new("task_b", tail)
  b.to_s # => "TOP => task_a => task_b"
end

インスタンスメソッド

append(task_name) -> Rake::InvocationChain[permalink][rdoc]

与えられたタスク名を追加して新しい Rake::InvocationChain を返します。

[PARAM] task_name:
追加するタスク名を指定します。
[EXCEPTION] RuntimeError:
循環したタスクの呼び出しを検出した場合に発生します。

# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  invocation_chain= Rake::InvocationChain.new("task_a", Rake::InvocationChain::EMPTY)
  invocation_chain.append("task_b") # => LL("task_b", "task_a")
end
member?(task_name) -> bool[permalink][rdoc]

与えられたタスク名が自身に含まれる場合は真を返します。そうでない場合は偽を返します。

[PARAM] task_name:
タスク名を指定します。

# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  invocation_chain = Rake::InvocationChain.new("task_a", Rake::InvocationChain::EMPTY)
  invocation_chain.member?("task_a") # => true
  invocation_chain.member?("task_b") # => false
end
to_s -> String[permalink][rdoc]

トップレベルのタスクから自身までの依存関係を文字列として返します。


# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  invocation_chain= Rake::InvocationChain.new("task_a", Rake::InvocationChain::EMPTY)
  invocation_chain.to_s # => "TOP => task_a"
end

定数

EMPTY -> Rake::InvocationChain::EmptyInvocationChain[permalink][rdoc]

Rake::InvocationChain::EmptyInvocationChain のインスタンスを表します。