Настройка Rails для Ruby 2.0

Выпущен Ruby 2.0, см.

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

Какие изменения для моего приложения/установки Rails я должен ожидать после обновления моей системы до Ruby 2.0?

Ответы

Ответ 1

Итак, вот что мне нужно было сделать после обновления.

Bundler 1.2.x несовместим, он вызывает ошибку при обновлении до >= 1.3, который еще не выпущен. Поэтому, если вы используете RVM, перейдите в свой глобальный gemset для 2.0 рубинов и обновите версию 1.3.pre до версии 1.3.0. Также похоже что-то с рубигемами api. Моя установка пакета не использовала новый API, вместо этого выполняла старый метод "выборки", который, конечно, занимает немного больше времени.

Кроме того, мой пакет установил чисто, и мой полный набор спецификаций завершился со всеми ОК. Я провел несколько тестов времени, чтобы узнать, сколько времени загрузки рельсов улучшилось.

# 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%)

Очевидно, что время загрузки для 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 500 миллионов раз

1.9.3 : 129.063s
2.0.0 :  97.234s

О 25% -ном снижении времени создания объекта.

Ответ 2

Я начал новый проект с рельсами 4 и ruby ​​2.0. Вот как я это сделал.

Сначала я установил RVM в Ruby 2.0.

Затем установлен пакет 1.3:

$ gem install bundler

Обновлены эти драгоценные камни и "установка пакета".

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