bundlerのプロジェクトでローカルのgemをリポジトリ内に含めて管理する
非公開のgemに依存しているプロジェクトがあって、そのgemの管理方法にちょっと悩んだのでメモ。
最初考えたのは普通にGemfile内でgemへのパスを指定する方法。
gem 'hoge-fuga', '= 1.0.0', path: 'vendor/gems'
これでgemをvendor/gems/hoge-fuga-1.0.0.gemのように配置すればめでたくbundle installできるようになる。
が、bundle isntallすると、vendor/gems/hoge-fuga-1.0.0.gemが消えてしまう。ゴウランガ!
そこでgemをvendor/cache/hoge-fuga-1.0.0.gemに配置して、Gemfileを以下のように編集した。
gem 'hoge-fuga', '~> 1.0.0'
この状態でbundle installすれば、ちゃんとインストールされるし、gemファイルも消えなくなる。
あとは.gitignoreに他のキャシュされてるgemをリポジトリで管理しないように設定すればOK。
vendor/cache !vendor/cache/hoge-fuga-1.0.0.gem
この方法はちょっとイケてなさを感じるので、いい方法があったら教えてください。