3

我们正在内部开发一些 gem,并希望将它们托管在本地 gem 服务器上,然后与 bundler 一起使用。当我尝试将 gem 推送到服务器时,我得到 404 for /api/v1/gems. 这发生在我们的实际服务器上,当我尝试在我的笔记本电脑上本地运行它时(两者都在 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接受推送吗?还是我错过了其他东西?

4

2 回答 2

3

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

gem install -i <directory> --ignore-dependencies <path/to/gem>
于 2012-07-30T19:10:41.313 回答
0

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

于 2013-02-07T20:41:33.990 回答