为Ruby 2.0配置Rails

Bri*_*tro 16 ruby linux macos ruby-on-rails ruby-2.0

Ruby 2.0已经发布,请参阅:

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

在将系统升级到Ruby 2.0后,我预计会对我的Rails App/Installation进行哪些更改?

Clu*_*ter 16

所以这是升级后我必须做的事情.

Bundler 1.2.x不兼容,它引发了一个错误,说升级到> = 1.3,尚未发布.因此,如果您正在使用RVM,请跳转到2.0 ruby​​的全局gemset并升级到1.3.pre版本,直到1.3.0发布.似乎还有rubygems api的东西.我的bundle install没有使用新的API,而是使用旧的'fetch index'方法,这当然需要更长的时间.

除此之外,我的软件包确实安装得很干净,我的全套规范测试都完成了.我做了一些时序测试,看看导轨加载时间有多大改善.

# 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%)
Run Code Online (Sandbox Code Playgroud)

显然,对于所有测试宝石来说,rspec的加载时间稍长一些,但是加载时间仍然超过50%,并且测试运行时间下降10%.

我做了一个类似的测试,使用rails runner 'puts User.count'它将跳过测试bootstrapping.

1.9.3 : 7.27s
2.0.0 : 3.36s (46.2%)
Run Code Online (Sandbox Code Playgroud)

再次,超过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)
Run Code Online (Sandbox Code Playgroud)

边际,收益率约为4-5%.

更有趣的是,将Object.new称为5亿次

1.9.3 : 129.063s
2.0.0 :  97.234s
Run Code Online (Sandbox Code Playgroud)

对象创建时间减少约25%.


Bri*_*tro 6

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

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

然后安装捆绑器1.3:

$ gem install bundler
Run Code Online (Sandbox Code Playgroud)

更新了这些宝石和'捆绑安装'.

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
Run Code Online (Sandbox Code Playgroud)