生煮えQiita記事です
課題
rubygemsに公開したくないgemがある。
例えば、社外秘のドメインのためのgem(以後private gemと呼んだりする)や、フォークしてメンテナンスし続けているgemなど。
そういうgemをどこで公開するのがよいのだろうか。
公開する場所はもちろん、gemを開発するためのリポジトリやコードレビューのツールも欲しい。
gem serverをたてる
RubyGems GuidesのRun your own gem serverが参考になる。
gem server
gem server
でローカルのgemを公開することができる。
前述のRun your own gem serverで紹介されている。
[WIP] Gem in a Box
使ったことがないのであとで試したい
geminabox/geminabox
[WIP] Gemfury
使ったことがないのであとで試したい
Private Gem Server, npm Registry, PyPI Repository & more • Gemfury
Git
BundlerのGemfileで使うgemを記述する際git
オプションを使うとGitリポジトリをgemとして使えるようになる。
開発用のGitリポジトリをそのまま公開して使えるのでポピュラーだと思う。
GitHub
GitHub · Build software better, together.を見ると、一番安い個人用アカウントのmicro planだと$7〜で5つまでプライベートリポジトリが持てる。
次のような問題がある
- gemが大量にあるので1つ1つprivate repositoryを使うとお金が飛ぶ
- gemごとにブランチを切れば1つのリポジトリで無限に非公開gemがつくれる(例: blockgiven/gems)
- ただし細かいアクセス制限ができない
- 大量にブランチあると混乱する、プルリクが出しづらい、タグうつとき名前に困りそう
- gemごとにブランチを切れば1つのリポジトリで無限に非公開gemがつくれる(例: blockgiven/gems)
- 課金してもOrganizationプランのプラチナムだと125リポジトリまでしか持てない
Secret Gist
GistでGemを公開する方法を使えばsecret gistで無料で無限に非公開gemがつくれる。
この場合次のような問題がある
- ForkできるがPull Requestが出せない
- URLが漏れると誰でも見れてしまう
- 上記の問題のためsecret gistのgemを使っているリポジトリを外部に公開できない
Bitbucket
Bitbucketでは無料で無制限のプライベートリポジトリが持てる。なので無料で無限に非公開gemがつくれる。
しかし次のような問題がある
- GitHubではない
- 無料プランでは人チームまでしか使うことができない
- 上位のプランでも人数制限がある
GitLab/GitBucket/etc...
オープンソースで開発されているGitHubクローンを使えば無料で無制限のプライベートリポジトリが持てる。レビューなどもできる。なので無料で無限に非公開gemがつくれる。
しかし次のような問題がある
- 無料ではない
- サーバーの維持費
- 人間が面倒を見る回数・時間の分だけ運用するのに費用がかかる
- BitBucketの$200/month無制限と人件費を天秤にかけるとどちらが重いか⚖