タイトルの通りですが、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