動かざることバグの如し

近づきたいよ 君の理想に

Capistrano3系でgit submodulesを使ってデプロイをする

環境

最近はめっぽう聞かないが、gitにはサブモジュール(git submodules)という機能がある。

この機能自体は便利なんだろうけど、それをCapistrano経由でデプロイしようとすると厄介な話になってくる。というのもCapistranoはgit submodulesに公式で対応してないからである(2系は対応していたらしい

ってことはプラグイン入れないといけないね、ってことで探したらあった。その名も「capistrano-git-with-submodules

インストール

Gemfileに

gem 'capistrano-git-with-submodules'

を追加して bundle install

で、Capfileに

require "capistrano/scm/git-with-submodules"
install_plugin Capistrano::SCM::Git::WithSubmodules

を追加すればおk

あとは勝手にデプロイ時にサブモジュールもgit cloneしてくれる

注意点

公式サイトにも載っているが、3系とは3.7以降のみ対応している。それ未満のバージョンのCapistranoを使っている場合は同じ作者の「ekho/capistrano-git-submodule-strategy」を使う。