シェアする

Capistrano3 Task を Overrideする方法

capistrano override tasks

capistranoいいよね。
てか最近Railsがオワコンみたいなことが叫ばれてて、ちょっと悲しいです(´;ω;`)ウッ…

今回はCapisttranoのタスクを修正する方法を解説します。

公式にはこんな感じに書いてあるが、実際に僕がやりたかったのは、
複数ユーザーが一つのマシン内で別のデプロイをしようとした際、
gitのwrapperタスクのところでPermissionDeniedする問題を解決しようとしました。

公式のOverride方法

簡単なtaskのoverrideなら公式のとおりにやればいいだけ。

clear_actionがoverrideするためにtaskを削除してくれる。
他にもclear文はこれだけあるみたい。

  • clear_prerequisites
  • clear_actions
  • clear_comments

実際に書いたコード

実際にやろうとしたことは、手元にないTaskのoverrideなので、ちょっと工夫が必要になりました。
gitのwrapperの部分をoverrideしたいので、そこまでの継承を書く必要がありました。

これだけ、まあ簡単だね。
Skipしちゃうけど大丈夫?って思ったけどソースみたかんじssh設定してるだけだから、
べつに初回だけどよさそう。なので、二回目以降はスキップしちゃいました。
該当箇所のコミットも頻繁にされていない様子なので。(笑)

clearってやればいいんだよ。

簡単だね。



じゃあね〜〜〜。