web-dev-qa-db-ja.com

Capistranoタスクをローカルで実行するにはどうすればよいですか?

ローカルで(開発マシン上で)実行することになっているカスタム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"]

代わりにローカルで実行するにはどうすればよいですか?

16
Daniel

使用することをお勧めします:

system("git Push dreamhost")

または

output = %x[git Push dreamhost]

それは単純ですRuby!

17
Cydonia7

または、 run_locally Capistranoでネイティブに実行し、適切なロギングとそのすべての優れた機能を取得します

89
patcon

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

3

次のものも使用できます。

require 'rake'     # Access to sh command
[...]
desc "Push code to Dreamhost"
task :Push do
   sh "git Push dreamhost"
end
1