There are times you would like to run your own gem server.你或许希望分享你的gem给你的同事,但是又苦于没有网络。你或许私有代码仓库,组织内部网络的需求,你希望 distribute and manage as gems 不需要公开发行。
有几种可选你的方案来设置你的gem服务器在内部网中。这份文档包含 gem server
命令和 Gem in a Box 项目。他也讨论怎样使用这些gem server。
一、运行内建的gem server
当你安装rubygems后,他添加了gem server 命令到你的系统中。这是最简单的启动gem服务器的方式。只需要运行以下命令:
gem server
这会工作在你的所有本地安装的gem,主机地址是 http://localhost:8808. 如果你在浏览器中打开这个地址,你会发现 gem server
提供了一份html文档。
当你安装新的gem后,内建的gem server会自动使用它们。
完整的选项请运行:
gem server --help
在其他选项中,你可以更改端口。
二、运行gem在box
如果gem服务器需要更多的功能,例如包含push gem试试 Gem in a Box 这个项目。
首先,安装 geminabox
:
[~/dev/geminabox] gem install geminabox
创建一个data目录来存放gems:
[~/dev/geminabox] mkdir data
在 config.ru
文件里面包含如下:
[~/dev/geminabox] cat config.ru
require "rubygems"
require "geminabox"
Geminabox.data = "./data"
run Geminabox::Server
然后运行服务器:
[~/dev/geminabox] rackup
[2011-05-19 12:09:40] INFO WEBrick 1.3.1
[2011-05-19 12:09:40] INFO ruby 1.9.2 (2011-02-18) [x86_64-darwin10.5.0]
[2011-05-19 12:09:40] INFO WEBrick::HTTPServer#start: pid=60941 port=9292
然后你可以push gem使用 gem inabox
命令。第一次这样做的时候, you’ll be prompted for the location of your gem server.
[~/dev/secretgem] gem build secretgem.gemspec
Successfully built RubyGem
Name: secretgem
Version: 0.0.1
File: secretgem-0.0.1.gem
[~/dev/secretgem] gem inabox ./secretgem-0.0.1.gem
Enter the root url for your personal geminabox instance. (E.g. http://gems/)
Host: http://localhost:9292
Pushing secretgem-0.0.1.gem to http://localhost:9292/...
同时也在 http://localhost:9292 有效。更多信息请查看 Gem in a boxREADME.
三、从你的服务器使用gems
不管你和私用 gem server
, 还是Gem in a Box, 或者其他 gem server, 你可以配置 RubyGems 使用你的本地或者内部原而不是其他原,例如 http://rubygems.org.
使用 gem sources
命令添加你的gem server到你的 system-wide gem 原. 以下URL在通过rackup运行gem in a box 默认的:
gem sources --add http://localhost:9292
然后像往常一样安装gem:
[~] gem install secretgem
Successfully installed secretgem-0.0.1
1 gem installed
如果你使用 Bundler ,你可以在你的 Gemfile
:中修改gem原。
[~/dev/myapp] cat Gemfile
source "http://localhost:9292"
gem "secretgem"
[~/dev/myapp] bundle
Using secretgem (0.0.1)
Using bundler (1.0.13)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.