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
この方法はちょっとイケてなさを感じるので、いい方法があったら教えてください。