Edited at

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