16

Ruby 2.0 已经发布,见:

http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/

将我的系统升级到 Ruby 2.0 后,我应该对我的 Rails 应用程序/安装进行哪些更改?

4

2 回答 2

16

所以这是我升级后必须做的。

Bundler 1.2.x 不兼容,它会引发一个错误,提示升级到 >= 1.3,该版本尚未发布。因此,如果您使用的是 RVM,请跳转到 2.0 ruby​​ 的全局 gemset 并升级到 1.3.pre 版本,直到 1.3.0 发布。rubygems api似乎也有问题。我的包安装没有使用新的 API,而是使用旧的“获取索引”方法,这当然需要更长的时间。

除此之外,我的包确实安装得很干净,我的全套规范测试都顺利完成。我做了一些计时测试,看看 Rails 加载时间改善了多少。

# Using 1.9.3-p327

RSpec Time: 24.87s
Wall Time : 34.40s
Load Time :  9.53s

# Using 2.0.0-p0

RSpec Time: 22.49s (90.4%)
Wall Time : 26.89s (78.2%)
Load Time :   4.4s (46.2%)

显然,所有测试 gem 的 rspec 加载时间都稍长一些,但加载时间下降 50% 以上,测试运行时间下降 10% 还是不错的。

我做了一个类似的测试,使用rails runner 'puts User.count'它会跳过测试引导。

1.9.3 : 7.27s
2.0.0 : 3.36s (46.2%)

再次,下降超过 50% :)

有点偏离轨道......我猜新玩具会这样做,但似乎我必须做的唯一改变是升级到预发布捆绑器。

这是对不同迭代器的另一个测试

$ rvm 1.9.3-p327,2.0.0-p0 --verbose do ruby test.rb
ruby-1.9.3-p327: ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux] 
       user     system      total        real
for    0.610000   0.000000   0.610000 (  0.607189)
times  0.580000   0.000000   0.580000 (  0.587303)
upto   0.590000   0.000000   0.590000 (  0.585730)
each   0.590000   0.000000   0.590000 (  0.593494)
ruby-2.0.0-p0: ruby 2.0.0p0 (2013-02-24 revision 39474) [i686-linux] 
       user     system      total        real
for    0.590000   0.000000   0.590000 (  0.582743)
times  0.560000   0.000000   0.560000 (  0.565961)
upto   0.560000   0.000000   0.560000 (  0.562400)
each   0.570000   0.000000   0.570000 (  0.573469)

边际,大约 4-5% 的收益。

更有趣的是,调用 Object.new 5 亿次

1.9.3 : 129.063s
2.0.0 :  97.234s

对象创建时间减少了大约 25%。

于 2013-02-24T20:20:44.317 回答
6

我用 rails 4 和 ruby​​ 2.0 开始了一个新项目。我就是这样做的。

首先,我将 RVM 设置为 Ruby 2.0。

然后安装捆绑器 1.3:

$ gem install bundler

更新了这些 gem 和“捆绑安装”。

gem 'rails',     :git => 'git://github.com/rails/rails.git'
gem 'journey',   :git => 'git://github.com/rails/journey.git'
gem 'arel',      :git => 'git://github.com/rails/arel.git'

group :assets do
  gem 'sass-rails',   :git => 'git://github.com/rails/sass-rails.git'
  gem 'coffee-rails', :git => 'git://github.com/rails/coffee-rails.git'
end
于 2013-03-01T09:49:13.397 回答