2

我正在尝试设置我自己的私有 gem 服务器,该服务器应该为我的 gem 提供服务并显示 rdoc。正如我所读到的,默认的 gem 服务器应该能够做到这一点。而且由于我不希望在 gem 服务器上显示除我自己以外的所有 gem,因此我正在执行以下操作:

gem install -i /some/dir --ignore-dependencies my-special.gem
gem server -d /some/dir # -d should let me set my gem dir

但首先,gem 服务器仍然显示所有已安装的系统 gem,而不显示里面有什么some/dir。其次,在尝试执行以下操作时:

gem install --source http://localhost:8808 my-special.gem

我只收到以下消息:

ERROR:  Could not find a valid gem 'my-special' (>= 0) in any repository
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
        bad response Gateway Time-out 504 (http://localhost:8808/latest_specs.4.8.gz)

即使对于在创建的 gem 服务器页面上显示的 gem,我也能做到这一点

http://localhost:8808

我究竟做错了什么?一些博客提到要更新索引,gem generate_index但这没有任何意义,因为该工具希望*.gem文件位于/gems子目录中,但默认情况下它们位于/cache.

4

1 回答 1

0

我很容易解决了这个问题。

我什至不使用专用的 gem 服务器。

我做了以下事情:

  1. 在您的 apache Web 服务器上创建一个可服务的目录并在其中创建一个子目录gems。例如: mkdir -p /var/www/rubygems/gems

  2. 将您想要服务的所有 gem 放到创建的gems子目录中:cp /my/gems/dir/*.gem /var/www/rubygems/gems

  3. 生成 gem 索引: gem generate_index -d /var/www/rubygems

  4. 不要忘记调整访问权限,以便您的 Web 服务器可以读取内容

信息:索引必须在包含子目录的目录中生成gems,而不是gems目录本身!在这种情况下,它是/var/www/rubygems.

现在您可以添加http://<my-gem-server>.domain/rubygems到您的 gem 资源中

于 2012-08-28T11:36:46.003 回答