我正在尝试设置我自己的私有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
答案 0 :(得分:0)
我很容易解决这个问题。
我甚至没有使用专用的gem服务器。
我做了以下事情:
在Apache服务器上创建一个可维护的目录,并在其中创建一个gems
子目录。例如:
mkdir -p /var/www/rubygems/gems
将您要投放的所有宝石放入已创建的gems
子目录:cp /my/gems/dir/*.gem /var/www/rubygems/gems
生成gem索引:
gem generate_index -d /var/www/rubygems
不要忘记调整访问权限,以便您的网络服务器可以阅读内容
INFO:必须在包含gems
子目录的目录中生成索引,而不是gems
目录本身!在这种情况下,它是/var/www/rubygems
。
现在您可以将http://<my-gem-server>.domain/rubygems
添加到您的宝石来源