serverでローカルgemサーバーを立ててみよう|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社エンジニアの「?」を「!」に。serverでローカルgemサーバーを立ててみようhachi8833&シェアツイートブックマークLINEこんにちは、hachi8833です。今回はローカルgemサーバーと、ミラーリングgemリポジトリについての記事です。rubygems.org以外のgemリポジトリが欲しいとき自分でgemを書こうとするとき、rubygems.org/にいきなりgemを置いてよいものかどうか、はたと考えてしまいました。最終的にはrubygems.orgに置きたいとしても、gemの導入をテストする段階で置きたくありませんので、手近なgemリポジトリが欲しくなります。gemファイル名を直接指定してインストールしてもいいのですが、もうちょっとかっこよくやりたいものです。rubygems.orgに置かずに組織内限定で運用するとしても、組織内サービスとしてgemリポジトリがあると便利です。serverコマンドを利用できます。-lを実行してみてください。デフォルトのブラウザで以下の画面が表示されます。hogehogeなどとするより便利です。rdocコマンドを実行したことがなくても即座に表示されます(後述)。updateの取得元をローカルgemリポジトリに変更できます。installを直接実行する際のインストール元として指定もできます。serverをまとめたものです。serverで起動するWebサーバーは、現在自機にインストールされているgemのRDocを表示します。serverでgemを提供するには、インストールされているgemのキャッシュファイルが必要です。http://gem_server_host:8808のようにします。serverを実行すると、ヘルプ内で以下のようにデフォルトのコマンドが表示され、利用するローカルgemのディレクトリをそこで確認できます。このディレクトリパスは環境に合わせて動的に生成されているので、どのディレクトリのgemがサーバーで使われているかを確認するのに便利です。serverコマンドのさらに詳しい情報が載っています。その中にgemirroという、rubygems.orgをミラーリングするgemが紹介されています。詳しい操作についてはそれぞれのリンクをご覧ください。Railsを一日に十数回もデプロイするような激しい開発を行っている組織であれば、以下の理由からgemirroなどを使ってgemリポジトリサーバーの設置を検討するとよいでしょう。gemバージョンをミラーリポジトリで厳密に管理できる検証済みのgemのみを選別してミラーリングすることで、gemに非互換のアップグレードが発生した場合や、必要なバージョンのgem(下手するとgemそのもの)が消滅した場合にも備えられるgem取得のパフォーマンス向上インターネット接続トラフィックの削減rubygems.orgの負荷軽減(結果として)本番環境の近くにミラーリングリポジトリを設置するミラーリポジトリは、開発者向けに組織内に設置するほかに、本番環境に近いところに設置するのも有効です。Zone内にミラーリポジトリを設置することで転送量削減やパフォーマンス向上が見込めます。Zone、同一Regionに閉じ込めることでコスト削減につながります。serverとgemirroの中間に位置づけられるgeminaboxというgemも紹介されています。serverにgemのアップロード機能などが追加されており、もう少し凝ったことをしたいときに使えそうです。念のため、rdocコマンドでgemのRDocファイルを生成してみましたが、やはり動きません。それにしてもrdocコマンドは重いですね。searchやブラウザの検索機能で十分間に合うので、この検索機能ははっきり言って全然要らないのですが、ちょっとだけ追ってみました。Rubyのバージョンは2.3.3、RubyGemsのバージョンは2.6.8です。rubygemsのserver.rbの719行目で、入力クエリの前方一致と部分一致を検索に送っています。...end745行目は以下のようになっています。docのindex.htmlがgemディレクトリ名/rdoc/index.htmlにあることが前提になっています。endしかし、私の環境のgem置き場のdocディレクトリはこの構成になっていません(searchは自作のシェルスクリプトです)。私のRDoc生成方法のオプションに問題があったのか、それともディレクトリ構成に変更があったのかもしれませんが、ほぼ使われていない機能のようなのでissuesにも見当たりませんでした。RDocで生成したドキュメントが0.8G近くもあったので、削除しちゃいました。コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。チュートリアル第2版の監修および半分程度を翻訳、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れて更新翻訳中。enno.jpを運営。実は最近Go言語が好きで、Goで書かれたRubyライクなGoby言語のメンテナーでもある。仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。Storageを使ってはいけない(翻訳)#Tags#会社紹介#自社サービス#勉強会#Rails#PHP#デザイン#実績#週刊RailsウオッチCONTACTお気軽にご相談ください。(翻訳)CONTACTTechRachoでは、パートナーシップをご検討いただける方からのご連絡をお待ちしております。お気軽にご意見・ご相談ください。