Ruby
GitHub
Gem
bundler

GitHubのプライベートリポジトリのgemをbundle installする

More than 1 year has passed since last update.

結論

bundler 1.11以上で export BUNDLE_GITHUB__COM=<username>:<personal access token> する

補足

諸般の事情でプライベートリポジトリで管理したいgemがある場合、bundle installするにはどのようにすればよいのか。

ぐぐると、こんなかんじで、GitHubのuser/passwordやpersonal access tokenを環境変数で渡す例が見つかるんですが、

How can I specify a gem to pull from a private github repository?

gem 'my_gem', :git => 'https://my_username:my_password@github.com/my_github_account/my_repo.git', :ref => 'revision_no'

Building a project with private gems

gem 'ventana', git: "https://#{ENV['GITHUB_TOKEN']}:x-oauth-basic@github.com/thoughtbot/ventana.git"

この方法は、Gemfile.lockにパスワードやトークンが残ってしまうので、セキュリティ的には片手落ちでよくありません。

もうちょっと調べてみると、bundler 1.11以上であれば、Gemfileに書かなくても環境変数から読んでくれるようになってました。

https://github.com/bundler/bundler/pull/3898

github.comにホストしている場合は、 BUNDLE_GITHUB__COM という環境変数でユーザ名とパーソナルアクセストークンをexportしておくと見てくれます。

export BUNDLE_GITHUB__COM=<username>:<personal access token>

試してないですが、github.com以外もドメインに対応した同じルールで環境変数を見てくれるみたい。
あとbundle configにセットする方法もある。bundlerの公式ドキュメントは以下をどうぞ。

http://bundler.io/man/bundle-config.1.html#CONFIGURATION-KEYS