ローカルで(開発マシン上で)実行することになっているカスタムCapistranoタスクを定義しました:
desc "Push code to Dreamhost"
task :Push do
run "git Push dreamhost"
end
ただし、実行しようとするとcap Push
リモートマシンで実行します。
* executing `Push'
* executing "git Push dreamhost"
servers: ["ec2-999-99-999-999.compute-1.amazonaws.com"]
代わりにローカルで実行するにはどうすればよいですか?
使用することをお勧めします:
system("git Push dreamhost")
または
output = %x[git Push dreamhost]
それは単純ですRuby!
または、 run_locally
Capistranoでネイティブに実行し、適切なロギングとそのすべての優れた機能を取得します
Run_locallyが出力を表示しないと述べたコメンターの場合、出力を変数にダンプしてから印刷して表示する必要があります。このような:
task :testing_run_locally do
output = run_locally "hostname"
puts "OUTPUT: " + output
end
欠点は、コマンドが終了するまで出力が表示されないことです。長く実行されないコマンドにとっては大したことではありませんが、数分間実行されると、デプロイが終了するまでハングしているように見えます。 run_locallyにリアルタイムコマンド出力を追加するCapistranoのオープンプルリクエストがあります: https://github.com/capistrano/capistrano/pull/285
次のものも使用できます。
require 'rake' # Access to sh command
[...]
desc "Push code to Dreamhost"
task :Push do
sh "git Push dreamhost"
end