カピストラノのタスクを別のものから呼び出すにはどうすればよいですか?例えば1つのCapistranoタスクを別のものから呼び出すにはどうすればよいですか?
:一般
task :foo do
# stuff
end
task :bar do
# INVOKE :foo
end
カピストラノのタスクを別のものから呼び出すにはどうすればよいですか?例えば1つのCapistranoタスクを別のものから呼び出すにはどうすればよいですか?
:一般
task :foo do
# stuff
end
task :bar do
# INVOKE :foo
end
あなたが名前空間を使用してそれを行うことができます。
namespace :test do
task :one do
end
task :two do
test.one
#or just directly call it:
one
end
end
は名前だけに注意してください重要な機能を上書きしないようにします。
あなたが依存関係を定義することで、次の操作を行います。
before :bar, :foo
レコードの場合:Capistrano 3では、invoke()
を使用してください。 https://github.com/capistrano/capistrano#before--after
ちょうどメモ: 'invoke'は' task'のすぐ内側にある必要があります。 'on'、' within'や他のブロックはありません。それ以外の場合は動作しません。 –
別のタスクのブロック内でどのようにタスクを再利用しますか? – kaizenCoder
@aspiringCodeArtisan、ユースケースの1つは、一連の小さなタスクの一般的なタスクを作成することです。 –
で
desc "Task that does something"
task :do_something do
invoke 'namespace:task'
end
複数のタスクが別の名前空間に住んでいる場合は、代わりにfind_and_execute_task
を使用することができます。
でも可能です、これが動作します
なぜこれは機能しませんか? 'task:d、:roles => [:app] do deploy end' –
補足:' test'名前空間は、その名前を持つ既存のCapistranoメソッドをシャドーするので使用しないでください。 'ArgumentError'が発生します。 –
ええ、申し訳ありませんが、それはほんの一例に過ぎませんでした。私はあなたがもっと意味のある名前空間を選ぶと思っています。 – mpapis