无法将宝石推送到私有宝石服务器

时间:2012-07-27 16:26:25

标签: ruby rubygems gem

我们正在内部开发一些宝石,并希望将它们托管在本地gem服务器上,然后与bundler一起使用。当我尝试将gem推送到服务器时,我获得了/api/v1/gems的404。这发生在我们的实际服务器上,当我尝试在我的笔记本电脑上本地运行时(两者都在gem v1.8.24上)。

这是运行gem服务器的终端会话:

$ gem --version
1.8.24
$ gem server
Server started at http://0.0.0.0:8808
Server started at http://[::ffff:0.0.0.0]:8808

这是我试图推动任意宝石:

$ gem --version
1.8.24
$ gem push --host http://127.0.0.1:8808 awesome_print-1.0.2.gem
Pushing gem to http://127.0.0.1:8808...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
  <HEAD><TITLE>Not Found</TITLE></HEAD>
  <BODY>
    <H1>Not Found</H1>
    `/api/v1/gems' not found.
    <HR>
    <ADDRESS>
     WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20) at
     127.0.0.1:8808
    </ADDRESS>
  </BODY>
</HTML>

是否需要指定命令行选项以告知gem server接受推送?或者我错过了其他什么?

2 个答案:

答案 0 :(得分:3)

看起来gem server仅用于提供已存在于系统中的宝石。如果您想将gems推送到服务器(从命令行或其他方式),您应该查看Gem in a Box之类的内容,或者只是手动将它们安装到您正在服务的目录中:

gem install -i <directory> --ignore-dependencies <path/to/gem>

答案 1 :(得分:0)

gem server不支持新的Bundler API请求。但是,当Bundler访问此服务器时,它将回退并获取旧索引格式(specs.4.8.gz)。引入Bundler API是因为全局(RubyGems.org)索引变得太大/太慢 - 这在具有少量gem的私有服务器上不会出现问题。如果您遇到问题,建议使用本地服务器上的GemInABox或云中的Gemfury