2010-12-02 8 views

答えて

34

あなたが名前空間を使用してそれを行うことができます。

namespace :test do 
    task :one do 
    end 
    task :two do 
    test.one 
    #or just directly call it: 
    one 
    end 
end 

は名前だけに注意してください重要な機能を上書きしないようにします。

+4

なぜこれは機能しませんか? 'task:d、:roles => [:app] do deploy end' –

+0

補足:' test'名前空間は、その名前を持つ既存のCapistranoメソッドをシャドーするので使用しないでください。 'ArgumentError'が発生します。 –

+0

ええ、申し訳ありませんが、それはほんの一例に過ぎませんでした。私はあなたがもっと意味のある名前空間を選ぶと思っています。 – mpapis

5

あなたが依存関係を定義することで、次の操作を行います。

before :bar, :foo 
90

レコードの場合:Capistrano 3では、invoke()を使用してください。 https://github.com/capistrano/capistrano#before--after

+11

ちょうどメモ: 'invoke'は' task'のすぐ内側にある必要があります。 'on'、' within'や他のブロックはありません。それ以外の場合は動作しません。 –

+0

別のタスクのブロック内でどのようにタスクを再利用しますか? – kaizenCoder

+0

@aspiringCodeArtisan、ユースケースの1つは、一連の小さなタスクの一般的なタスクを作成することです。 –

1

desc "Task that does something" 
task :do_something do 
    invoke 'namespace:task' 
end 

複数のタスクが別の名前空間に住んでいる場合は、代わりにfind_and_execute_taskを使用することができます。

2

でも可能です、これが動作します

関連する問題