gem服务器不会提供宝石

时间:2012-08-03 13:27:44

标签: ruby rubygems

我正在尝试设置我自己的私有gem服务器,它应该服务我的宝石并显示rdoc。正如我读过的那样,默认的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服务器仍会显示所有已安装的系统宝石,并且不会显示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服务器页面上显示的宝石,我也能得到它
http://localhost:8808

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

1 个答案:

答案 0 :(得分:0)

我很容易解决这个问题。

我甚至没有使用专用的gem服务器。

我做了以下事情:

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

  2. 将您要投放的所有宝石放入已创建的gems子目录:cp /my/gems/dir/*.gem /var/www/rubygems/gems

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

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

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

    现在您可以将http://<my-gem-server>.domain/rubygems添加到您的宝石来源