如何构建一个RubyGems镜像服务器?

23

我的工作场所禁止我们访问互联网,因此我们无法远程连接到rubygems.org来安装宝石(gems)。

我可以在家中访问rubygems.org。有没有简单的方法使我能够在家中下载和更新所需的宝石,然后将它们同步(通过便携式硬盘或其他方式)到我们工作场所的本地宝石镜像服务器上,以便其他同事也可以从该镜像服务器安装宝石?


10
你在哪里工作?那听起来不合理! - GrooveStomp
2
哈哈,别提什么宝石了,没有谷歌他们能干嘛? - panupan
2个回答

36

你可以使用rubygems-mirror来镜像gem,使用Gem in a box来托管它们。

安装rubygems-mirror:

$ gem install rubygems-mirror

编辑~/.gem/.mirrorrc

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

创建镜像目录:

$ mkdir ~/.gem/mirror

开始镜像:

$ gem mirror

镜像完成后,编辑~/.gem/mirror/config.ru

require "rubygems"
require "geminabox"

Geminabox.data = "./"
run Geminabox

在Gem in a box中安装Gem:

$ gem install geminabox

启动 gem 服务器:

$ cd ~/.gem/mirror
$ rackup

编辑您的应用程序的 Gemfile,以使用您的 gem 服务器:

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

或者将其添加为本地的镜像,这样你就不必更改Gemfile

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

定期重新索引您的镜像:

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

谢谢!如果我想要更新镜像,我需要做的只是:步骤1:$gem mirror; 步骤2:将家用电脑上的/.gem/mirror xcopy到我工作场所本地服务器的/.gem/mirror,我是对的吗? - TomCaps
是的,您还需要配置Gem in a box服务器并更新源以指向它。 - panupan
我想问一下,这个操作会占用多少磁盘空间?我也担心镜像操作可能会下载大量的千兆字节。此外,这是一个可以停止并在之后继续的操作吗?当然,我指的是“gem mirror”命令。 - Ernesto
5
目前有超过44,000个宝石(http://rubygems.org/stats),需要超过100GB的空间。我建议您除非真的需要,否则不要这样做。 gem mirror命令可以中止并在上次离开的地方继续。 - panupan
嗨,我也在尝试做同样的事情。有人可以指导我一下步骤吗?@TomCaps - ProgrammerPanda

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接