这个有可能你本地网络的原因,也有可能是gem源的问题,我采取的方法是更换gem源.
你可以使用如下命令显示gem源列表:
gem sources -l
你可以使用如下命令来删除和新增源:
gem sources --remove https://rubygems.org/ gem sources -a http://ruby.taobao.org/
然后你可以更新源缓存:
gem sources -u
上面的命令可能根本没有回显,如果有也往往是出错或发生变更时的回显,我怎么知道它到底做了什么检查呢!?
这时linux/unix系统统一的知识体系显示出威力了!因为我知道在linux下一条命令要想开启”噪声”模式,要在命令后添加-v或-V参数,所以我才十有八九gem的命令也是这个套路,所以我首先尝试使用-v参数开启”噪声”模式:
gem sources -u -v #回显如下 apple@kissAir: ~$gem sources -u -v GET http://gems.ruby-china.org/specs.4.8.gz 302 Moved Temporarily GET http://gems-ruby-china.b0.upaiyun.com/specs.4.8.gz 304 Not Modified GET http://gems.ruby-china.org/latest_specs.4.8.gz 302 Moved Temporarily GET http://gems-ruby-china.b0.upaiyun.com/latest_specs.4.8.gz 304 Not Modified GET https://ruby.taobao.org/specs.4.8.gz 302 Moved Temporarily GET https://gems.ruby-china.org/specs.4.8.gz 302 Moved Temporarily GET https://gems-ruby-china.b0.upaiyun.com/specs.4.8.gz 304 Not Modified GET https://ruby.taobao.org/latest_specs.4.8.gz 302 Moved Temporarily GET https://gems.ruby-china.org/latest_specs.4.8.gz 302 Moved Temporarily GET https://gems-ruby-china.b0.upaiyun.com/latest_specs.4.8.gz 304 Not Modified ERROR: While executing gem ... (Gem::RemoteFetcher::UnknownHostError) no such name (https://rubygem.org/specs.4.8.gz)
你可以看到除了最后一个源名解析上有问题,其他源都进行了更新检查,但都没有变更.这样心里就有底啦!起码我知道这条命令做了许多事.
最后还有一种修改源的方法,在~用户根目录下,打开.gemrc文件:
--- :backtrace: false :bulk_threshold: 1000 :sources: - http://gems.ruby-china.org/ - https://ruby.taobao.org/ - https://rubygem.org :update_sources: true :verbose: true install: --no-rdoc --no-ri update: --no-rdoc --no-ri
你可以在这里直接修改gem源的顺序或其他参数.