RubyGems site使得运行私有gem服务器变得非常简单!
我的测试设置是这样的:一个AWS EC2实例是我的工作站,我还有另一个设置为gem服务器。
在gem服务器实例上,我安装了pry
gem。如果我在该实例上运行gem server
并在我的网络浏览器中访问公共DNS,我可以看到pry
以及宝石列表中的所有依赖项。
在我的工作站上,我创建了一个带有简单Gemfile的伪app目录:
source "http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808"
gem "pry"
看起来很简单!但是当我在工作站上运行bundle install
时,我收到以下错误:
[ec2-user@ip-172-31-20-246 my_app]$ bundle
Fetching source index from http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/
Resolving dependencies...
Gem::RemoteFetcher::FetchError: bad response Not Found 404 (http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/gems/coderay-1.1.1.gem)
Gem::RemoteFetcher::FetchError: bad response Not Found 404 (http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/gems/method_source-0.8.2.gem)
Gem::RemoteFetcher::FetchError: bad response Not Found 404 (http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/gems/slop-3.6.0.gem)
Using bundler 1.12.5
An error occurred while installing coderay (1.1.1), and Bundler cannot continue.
Make sure that `gem install coderay -v '1.1.1'` succeeds before bundling.
所以它似乎认识到pry
可用,但是找不到以coderay
开头的依赖项(404错误)。
在运行--dir
时,我已经摆弄了gem server
标志,所以它看起来像这样:
gem server --dir=/home/ec2-user/.gem/ruby/2.0 --dir=/usr/share/ruby/gems/2.0 --dir=/home/ec2-user/.gem/ruby/2.0/cache/
...我甚至已经进入这些目录并运行gem generate_index
,因为我在另一个问题上看到推荐但我仍然无法使用此私有服务器在我的工作站上安装pry
source
。
我有什么遗漏吗?
答案 0 :(得分:0)
几乎每颗宝石都依赖于其他宝石。如果您只想从私有gem服务器安装gem并且不允许在https://rubygems.org
使用默认服务器作为后备,那么您必须确保所有其他宝石都在您的私人宝石服务器。
您可以查看the pry
page on rubygems以查看其依赖关系。目前pry ('0.10.3')
取决于:
coderay ('~> 1.0.0')
method_source ('~> 0.8.1')
slot ('~> 3.4')
也可以在私有gem服务器上使用此依赖项,以删除该gem的Gem::RemoteFetcher::FetchError: bad response Not Found 404
错误。
在下一步中,您需要深入挖掘并使所有宝石可用,这三个宝石依赖于:coderay
没有外部依赖,但method_source
有一些,也安装它们。继续,直到缺少依赖关系树中的宝石。