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.rurequire "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.gemEnter the root url for your personal geminabox instance. (E.g. http://gems/)Host: http://localhost:9292Pushing 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 secretgemSuccessfully installed secretgem-0.0.11 gem installed
如果你使用?Bundler?,你可以在你的?Gemfile
:中修改gem原。
[~/dev/myapp] cat Gemfilesource "http://localhost:9292"gem "secretgem"[~/dev/myapp] bundleUsing 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.
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?