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?
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
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