由于我们处于一个大的“局域网”中,使用 gem 安装 rails 时经常会连接不到源,导致安装失败。这时候要么找梯子,要么就换个源吧。
By the way, 如果安装软件时经常遇到依赖错误,并且更换过 linux 系统的更新源,建议重新找一个更新源,比如 sohu 的,也许就解决了 ^_^ 。
下文综合了几个网页的内容,总结了由于源错误造成 gem install 以及 bundle install 失败的解决办法。
错误示例
比如安装时出现如下错误提示:
ERROR: Could not find a valid gem 'bundler' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://rubygems.org/latest_specs.4.8.gz)
ERROR: Possible alternatives: bundler
更换源
这里在 linux 命令行中跟换淘宝提供的源:
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org
# 请确保只有 ruby.taobao.org
$ gem install rails
如果你是用 Bundle (Rails 项目)
source 'https://ruby.taobao.org/'
gem 'rails', '4.1.0'
...
注: 这个操作我没有成功,采用下述方法修改成功(原因不深究了,比较懒,能用就好,不是吗 ^_< )。
这里需要做额外修改,是因为使用 rails new
生成新的项目时,生成的 Gemfile 中的源地址是 rubygems.org
官方源,而且总会自动运行 bundle install
,所以需要修改 rails 库中的 application generator 中的 Gemfile 模板,将其中的 source 选项的值改为: http://ruby.taobao.org
找到 applocation generator 中的 Gemfile模板的位置:
cd "$(gem environ | gawk '/INSTALLATION DIR/{print $4}')"
cd ./gems/railties-*/lib/rails/generators/rails/app/templates
vim ./Gemfile
分别把 Gemfile 的 source 改为 ‘http://ruby.taobao.org’ :
这里参考如下三个 Gemfile 的目录,最好找到另外两个 Gemfile 目录,并将 source 进行修改:
~/.rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/templates/Gemfile
~/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.1/lib/rails/generators/rails/app/templates/Gemfile
~/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.1/lib/rails/generators/rails/plugin_new/templates/Gemfile
我使用的是 rails 是 4.1.2 版本,没有找到上述第一个目录,第二个和第三个目录中的 Gemfile 都修改后,执行 ‘bundle install’ 正常。
更多内容
更多内容,包括 ruby 源码镜像等,请参考引用网页:
RubyGems 镜像 - 淘宝网
设置 Rails 生成的 Gemfile 中的 gem 源默认为 ruby.taobao.org
修改默认的 Gemfile
如何解决国内安装gem的问题
上一篇 下一篇