を実行中のタスク、私はこのようないくつかのカスタムタスクを持っている:カピストラーノ3 - 複数のロールに二回とき私deploy.rbで
namespace :deploy do
desc 'setup environment'
task :env do
on roles(:web) do
invoke 'symlink:env_file'
invoke 'config:foreman'
end
end
before 'assets:precompile', 'env'
end
私のサーバー定義は次のようになります。基本的に
server "my.app.ip", roles: %w{app web}, primary: true
server "my.resque.server.ip", roles: %w{resque web}
私'app'サーバはメインレールアプリの実行を担当し、私のリークボックスはバックグラウンドジョブを実行します。しかし、彼らは両方とも、私の独自のカスタムフックを使ってnginx + foremanを設定/実行するため、両方ともWebロールを持っています。
私は私のキャップdeployコマンドを実行すると、私はこのようなエラーに実行しておいてください。私は本当にただ、これらのコマンドは、サーバーごとに一度実行したい
Skipping task `symlink:env_file'.
Capistrano tasks may only be invoked once. Since task `symlink:env_file' was previously invoked, invoke("symlink:env_file") at config/deploy.rb:133 will be skipped.
If you really meant to run this task again, first call Rake::Task["symlink:env_file"].reenable
。タスク内のロール定義に基づく私の期待は、それらのタスクがサーバーグループ内の各「Web」サーバーに対して一度呼び出されるということです。なぜそれは何度も何かを実行しているのですか?
ありがとう、私はカピストラーノのより良い理解を持っています。 capistranoに名前空間内のすべてのコマンドを実行するように指示する方法はありますか?たとえば、私のカスタム 'config'名前空間に別のタスクがある場合、実行するために新しい行を追加する必要があります。 – Msencenb