ShellScript
capistrano
shell
capistrano3

Capistrano 3で複数行のシェルスクリプト的なアレを実行する

More than 1 year has passed since last update.

タイトルの通りですが、Capistrano 3で複数コマンドの組み合わせみたいなのをssh先のサーバ上で実行する方法が分からず微妙に悩んだのでメモ。

結論だけ言えば、ヒアドキュメントに突っ込んでexecuteの引数に渡せばいけました。何を悩んでたんだか。

sample.rake
task 'test' do
  on roles(:all) do
    testcmd = <<-EOS
      echo "This"
      echo
      echo "is"
      echo
      echo "test"
    EOS
    execute testcmd
  end
end
# output sample

$ bundle exec cap stg sample:test

00:00 sample:test
      01 echo "This"; echo; echo "is"; echo; echo "test"
      01 This
      01
      01 is
      01
      01 test
    ✔ 01 sample@host 0.063s