環境
- Capistrano 3.11
症状
Capistranoは非常に便利なデプロイツールで、Railsをデプロイするなら必須だと思う。いろいろ機能があって、その中でもdefault_envでexecuteするときの環境変数を設定できたり、withinでそのディレクトリの中で実行とかできる。。はずなのだが何回やってもうまくいかない
原因
書き方が悪い
どういうことか
withinの場合。例えばrelease_path以下内で実行したいとき、以下は有効
task :touch do on roles(:all) do within release_path do execute :touch, "hogehoge.txt" end end end
下はうまくいかない例
# not work!!! task :touch do on roles(:all) do within release_path do execute "touch hogehoge.txt" end end end
違いがおわかりだろうか、executeのあとにシンボルを渡さないとwithinは効かない
だからexecuteを実行する際は、
execute :実行したいコマンド名 "コマンドの引数"
にしなくてはいけない
default_envにしてもそうで、
set :default_env, { "PATH" => "/opt/php/php-7.1.3/bin:$PATH" }
とかで環境変数をセットできるがexecuteをシンボルで渡さないと反映されない。
割とハマってのでメモ てか駄目なら駄目でエラーとかになってくれ。。。