How to build a rubygems mirror server?

2019-01-16 10:51发布

问题:

My workplace has banned us from internet access so we can't connect to rubygems.org to install gems remotely.

I can access rubygems.org at home. Is there a simple way to enable me download and update the gems we need at home ,then sync them(by a portable hard disk or somthing) to a local gems mirror server at my workplace so that other colleagues can install gems from that mirror server?

回答1:

You can use rubygems-mirror to mirror the gems and Gem in a box to host them.

Install rubygems-mirror:

$ gem install rubygems-mirror

Edit ~/.gem/.mirrorrc:

---
- from: http://rubygems.org
  to: ~/.gem/mirror

Create mirror dir:

$ mkdir ~/.gem/mirror

Start mirroring:

$ gem mirror

Once mirroring finishes edit ~/.gem/mirror/config.ru:

require "rubygems"
require "geminabox"

Geminabox.data = "./"
run Geminabox

Install Gem in a box:

$ gem install geminabox

Start gem server:

$ cd ~/.gem/mirror
$ rackup

Edit your application's Gemfile to use your gem server:

source "http://your.servers.ip:9292"
.

Or add it as a local mirror for rubygems.org, so you don't have to change your Gemfile:

$ bundle config mirror.https://rubygems.org https://localgems.lan
$ bundle config mirror.http://rubygems.org http://localgems.lan

From time to time reindex your mirror:

$ gem generate_index --directory ~/.gem/mirror


回答2:

I don't think 'gem mirror' continuing from where it left of it very reliable. I ran into following issue https://github.com/rubygems/rubygems-mirror/issues/22 and I waiting hear back from gem owners