我正在尝试设置我自己的私有(private) 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
中。
最佳答案
我很轻松地解决了这个问题。
我什至不使用专用的 gem 服务器。
我做了以下事情:
在您的 apache 网络服务器上创建一个可服务的目录并创建一个
gems
其中的子目录。例如:mkdir -p /var/www/rubygems/gems
将你想要服务的所有 gem 放入创建的
gems
子目录:cp /my/gems/dir/*.gem /var/www/rubygems/gems
生成 gem 索引:
gem generate_index -d /var/www/rubygems
不要忘记调整访问权限,以便您的网络服务器可以读取内容
信息:索引必须在包含 gems
的目录中生成子目录,而不是 gems
目录本身!在本例中为 /var/www/rubygems
.
现在您可以添加 http://<my-gem-server>.domain/rubygems
到您的 gem 来源
关于ruby - gem 服务器不会提供 gem ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796703/