実行 Invocations
Thorにはまた実行依存性システムinvocation-dependency systemもあり, この仕組みで, タスクの発動を一度だけにすることもできる. たとえば:
Thor comes with an invocation-dependency system as well, that allows a task to be invoked only once. For example:
Thor comes with an invocation-dependency system as well, that allows a task to be invoked only once. For example:
class Counter < Thor
desc "one", "Prints 1 2 3"
def one
puts 1
invoke :two # 訳注: タスクtwoの中のthreeは実行されない!
invoke :three
end
desc "two", "Prints 2 3"
def two
puts 2
invoke :three
end
desc "three", "Prints 3"
def three
puts 3
end
end
タスクoneを実行すると:
When invoking the task one:
When invoking the task one:
thor counter:one
その出力は
The output is
The output is
1
2
3
となり, これはつまり, タスク
which means that the
You can even invoke tasks from another class, so be sure to check the
documentation for the Thor class.
three
は一度だけ実行されるということだ. 他のクラスからでも, この機能を使ったタスクの実行はできるので, Thorクラスについて ドキュメント を確認すること.which means that the
three
task was invoked only once.You can even invoke tasks from another class, so be sure to check the
documentation for the Thor class.
もろもろの実行invocationsは, 同一のオブジェクトを共有しないことに気づくだろう. すなわち, Thorはタスク
Notice invocations do not share the same object. i.e, Thor will instantiate
one
を実行するために Counter
を一度インスタンス化し, その次に, タスク two
の実行にもうひとつ, タスク three
を実行するためにまたひとつ Counter
をインスタンス化する. このことはもろもろのオプションと引数を, もう一度パースし直すことができるということだ. たとえば, もし two
と three
がそれぞれ異なったもろもろのオプションを持ち, 両方のオプション群がコマンドラインに与えられたような場合, invoke
をコールすることで, それぞれのタスクに従って, タスク毎に毎回それらがパースされ, 使用される.Notice invocations do not share the same object. i.e, Thor will instantiate
Counter
once to invoke the task one
, then, it instantiates another to invoke the task two
and another for task three
. This allows options and arguments to be parsed again. For example, if two
and three
have different options and both of them were given to the command line, calling invoke
enables them to be parsed each time and used accordingly by each task.
0 件のコメント:
コメントを投稿
何かありましたら、どうぞ: