如何构建rubygems镜像服务器?

Tom*_*aps 23 ruby rubygems ruby-on-rails

我的工作场所禁止我们上网,因此我们无法连接到rubygems.org远程安装宝石.

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

pan*_*pan 36

您可以使用rubygems-mirror将宝石和Gem 镜像一个框中以托管它们.

安装rubygems-mirror:

$ gem install rubygems-mirror
Run Code Online (Sandbox Code Playgroud)

编辑~/.gem/.mirrorrc:

---
- from: http://rubygems.org
  to: ~/.gem/mirror
Run Code Online (Sandbox Code Playgroud)

创建镜像目录:

$ mkdir ~/.gem/mirror
Run Code Online (Sandbox Code Playgroud)

开始镜像:

$ gem mirror
Run Code Online (Sandbox Code Playgroud)

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

require "rubygems"
require "geminabox"

Geminabox.data = "./"
run Geminabox
Run Code Online (Sandbox Code Playgroud)

在一个盒子里安装宝石:

$ gem install geminabox
Run Code Online (Sandbox Code Playgroud)

启动gem服务器:

$ cd ~/.gem/mirror
$ rackup
Run Code Online (Sandbox Code Playgroud)

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

source "http://your.servers.ip:9292"
.
Run Code Online (Sandbox Code Playgroud)

或者将其添加为rubygems.org 的本地镜像,因此您无需更改Gemfile:

$ bundle config mirror.https://rubygems.org https://localgems.lan
$ bundle config mirror.http://rubygems.org http://localgems.lan
Run Code Online (Sandbox Code Playgroud)

不时重新镜像你的镜子:

$ gem generate_index --directory ~/.gem/mirror
Run Code Online (Sandbox Code Playgroud)

  • 目前有超过44,000个宝石(http://rubygems.org/stats)占用超过100GB的空间.除非你真的需要,我建议不要这样做.gem mirror命令可以中止并从中断处继续. (5认同)