这两天 ruby.taobao.org 被 rubygems.org 官方的维护人员发现了,联系上以后他给了我一些改进镜像服务的建议
目前 ruby.taobao.org 已经换了一个方式来实现镜像(其实就是 Nginx proxy + caching,只是有方法的配置文件帮助,要靠谱许多)
配置文件就在:https://github.com/rubygems/rubygems.org-configs
接下啦,rubygems 的官方服务上面将做 IP 判断,自动把国内用户转向到 Taobao 镜像服务器,这样一来,以后大家就不用修改 gem remote 了。
有个缺点啊。。镜像服务器万一出问题了(像上次那样),那国内全部阵亡。。 感觉还是自己改 source 好点,而且 source 本来就是给你改的吧,这样这个功能反而成鸡肋了
很好啊~~ 这也算是 Ruby-china 真正给开源社区带来的贡献啊。
我觉得目前 Ruby-china 对于开源社区的贡献还是太少了。我觉得这需要激情,换个角度来说,这是需要信仰的,我很期待,Ruby-china 能够真正在整个世界的 Ruby 社区中,做到中坚力量之一的那一天。
有关该 gem source, 要是嫌麻烦,写俩函数就是了。刚学两天编程的菜鸟都会。呵呵。
function gem1 {
gem source --remove http://rubygems.org/ &>/dev/null
gem source --remove http://rubygems.org &>/dev/null
gem source --remove http://ruby.taobao.org/ &>/dev/null
gem source --remove http://ruby.taobao.org &>/dev/null
gem source --add http://rubygems.org/
gem source --list
}
function gem2 {
gem source --remove http://rubygems.org/ &>/dev/null
gem source --remove http://rubygems.org &>/dev/null
gem source --remove http://ruby.taobao.org/ &>/dev/null
gem source --remove http://ruby.taobao.org &>/dev/null
gem source --add http://ruby.taobao.org/
gem source --list
}
p.s. 我的.bashrc 里大把类似于这种初级的宏函数,我基本上就是靠别名在 CLI 下混呢。有很多对于使用 ruby, 使用 gem 还是很有帮助的。有兴趣的朋友可以去我的 github 上看看,自取所需吧。
目前 rubygems.org 官方已经自动根据 IP 判断,将国内的用户安装流程跳转到 ruby.taobao.org 镜像上面,以后无需修改 gem source,直接使用 rubygems.org 就可以了。
看下面的安装日志:
$ gem source -l
*** CURRENT SOURCES ***
http://rubygems.org/
$ gem install redis-search -V
GET http://rubygems.org/latest_specs.4.8.gz
302 Moved Temporarily
GET http://production.s3.rubygems.org/latest_specs.4.8.gz
304 Not Modified
GET http://rubygems.org/quick/Marshal.4.8/redis-search-0.9.0.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/redis-search-0.9.0.gemspec.rz
200 OK
GET http://rubygems.org/quick/Marshal.4.8/chinese_pinyin-0.4.1.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/chinese_pinyin-0.4.1.gemspec.rz
200 OK
GET http://rubygems.org/quick/Marshal.4.8/redis-namespace-1.2.0.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/redis-namespace-1.2.0.gemspec.rz
200 OK
GET http://rubygems.org/quick/Marshal.4.8/redis-3.0.1.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/redis-3.0.1.gemspec.rz
200 OK
GET http://rubygems.org/specs.4.8.gz
302 Moved Temporarily
GET http://production.s3.rubygems.org/specs.4.8.gz
304 Not Modified
GET http://rubygems.org/quick/Marshal.4.8/redis-3.0.0.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/redis-3.0.0.gemspec.rz
200 OK
Installing gem chinese_pinyin-0.4.1
Downloading gem chinese_pinyin-0.4.1.gem
GET http://rubygems.org/gems/chinese_pinyin-0.4.1.gem
302 Moved Temporarily
GET http://ruby.taobao.org/gems/chinese_pinyin-0.4.1.gem
Fetching: chinese_pinyin-0.4.1.gem (100%)
200 OK
Installing gem redis-3.0.1
Downloading gem redis-3.0.1.gem
GET http://rubygems.org/gems/redis-3.0.1.gem
302 Moved Temporarily
GET http://ruby.taobao.org/gems/redis-3.0.1.gem
Fetching: redis-3.0.1.gem (100%)
200 OK
感觉还是 source 自己改好。本来就是留着改的,自动跳转还不如想办法默认 rails new 直接生成 source=taobao 的 Gemfile 好些,把简单问题复杂化了
淘宝揽这么大一摊子,以后要为大家负起责任来,多为大家增加些便利服务,因为这么一改相当于把国内做 ruby 的都导向他们家啦,谁给他们的这种公众权力呢?请把相关方案贴出来看看或有个核心维护团队,让大家看到负责任的一面
目前我和 Evan 讨论决定在 Linode 东京增加 Rubygems 官方的节点,以后国内的用户指向那边 而淘宝这边作为备选方法(有用户自己配置 gem source 就像之前那样)
@huacnlee 挺,对于老版本的 gem 在 rubygems.org 没有的,能否自动到 rubyforge 上找呢?railscasts.com 里面比较的老的视频里配套的 source code 里的 gem 就有找不到的情况,所以问问,当然了有的改 gemfile 或删掉 gemfile.lock 也行,直接装最新版的也行
gem 应该没多大,猜测也就 1 个 G 左右? 如果淘宝官方支持这个事情应该很简单。当然可以联系下 sohu 和 163 的开源镜像服务,看是不是可以把 gem 也做上。
GET http://ruby.taobao.org/latest_specs.4.8.gz 302 Moved Temporarily GET http://gems.ruby-china.org/latest_specs.4.8.gz
connection reset after 1 requests, retrying 怎么回事
gem install code-statistics
lastest_specs too old, updating...
Downloading http://ruby.taobao.org/latest_specs.4.8.gz
curl: (7) couldn't connect to host
ERROR: While executing gem ... (GemFast::Util::ExecutionError)
Failure while executing: curl -f#LA rubygem-gemfast http://ruby.taobao.org/latest_specs.4.8.gz --insecure -o /home/weizhao/.rvm/gems/ree-1.8.7-2012.02@huafei2/cache/latest_specs.4.8.gz
今天 在家里和公司使用 taobao 镜像安装 gem 都有问题,怎么回事?要改什么地方?
gem sources 1 ↵
*** CURRENT SOURCES ***
http://ruby.taobao.org/
#41 楼 @azhao 早上那会是有问题,我跑在 Linode 上面的代理出问题了,现在可以了。
~ gem install code-statistics -V
GET http://ruby.taobao.org/latest_specs.4.8.gz
302 Moved Temporarily
GET http://gems.ruby-china.org/latest_specs.4.8.gz
302 Moved Temporarily
GET http://bb-proxy.rubygems.org/latest_specs.4.8.gz
200 OK
GET http://ruby.taobao.org/quick/Marshal.4.8/code-statistics-0.1.1.gemspec.rz
200 OK
GET http://ruby.taobao.org/quick/Marshal.4.8/ruby_ext-4.0.3.gemspec.rz
200 OK
GET http://ruby.taobao.org/quick/Marshal.4.8/vfs-0.4.8.gemspec.rz
200 OK
GET http://ruby.taobao.org/quick/Marshal.4.8/haml-3.1.6.gemspec.rz
200 OK
Installing gem ruby_ext-4.0.3
Downloading gem ruby_ext-4.0.3.gem
GET http://ruby.taobao.org/gems/ruby_ext-4.0.3.gem
Fetching: ruby_ext-4.0.3.gem (100%)
200 OK
...
#44 楼 @huacnlee 我在 linode 上用官方的可以了 用 taobao 的也可以 但在公司安装用淘宝的还是有问题
wget http://ruby.taobao.org/latest_specs.4.8.gz
--2012-08-08 15:12:50-- http://ruby.taobao.org/latest_specs.4.8.gz
正在解析主机 ruby.taobao.org... 110.75.120.11
正在连接 ruby.taobao.org|110.75.120.11|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:http://10.10.4.6/download/15562612/17283272/5/gz/2/125/1343525520898_893/latest_specs.4.8.gz [跟随至新的 URL]
--2012-08-08 15:12:50-- http://10.10.4.6/download/15562612/17283272/5/gz/2/125/1343525520898_893/latest_specs.4.8.gz
正在连接 10.10.4.6:80... 失败:没有到主机的路由。
我在公司的 IP IP:[220.113.12.139] 来自:北京市 长城宽带 这个是 10.10.4.6 应该是被变成内部网了,是不是我这个 IP 段的代理跳的时候出问题了?
4 小时前,rubygems / rubygems.org-configs 配置文件已经修改,将国内 ip 指向到 http://tokyo-m.rubygems.org