2

カピストラーノで、サーバーがプライマリとしてマークされている場合にのみ単一行を実行するタスクがあります。タスク内で参照できる変数またはメソッドはありますか? '主要な?' または「プライマリ」が機能していないようです。

また、次のようなことも試しました。

after "deploy", "task1"
after "deploy", "task2"
after "deploy", "task3"

task :task1, :roles => :app do
  *code*
end

task :task2, :roles => :app, :only => {:primary => true} do
  *code for just primary server*
end

task :task3, :roles => :app do
  *more code*
end

しかし、これでもうまくいかないようです (3 つのタスクはすべて、すべてのサーバーで実行されます)。

私はこれに数日間オンとオフで取り組んできましたが、検索がうまくいきません。考え?

4

1 に答える 1

3

問題は解決しましたが、きれいではありませんでした。私が見つけたのは、タスクごとに「primary => true」を使用する必要があるということです。コードを見ると、capistrano は、タスクが実行される前に、タスクが実行されるサーバーのリストを生成しているようです。

于 2009-01-07T19:21:56.973 に答える