Настройка 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?


person Brian Petro    schedule 24.02.2013    source источник
comment
Похоже, что большого списка поломок не так уж и много, сейчас обновляю, чтобы посмотреть, как с этим справляется приложение live rails.   -  person Cluster    schedule 24.02.2013
comment
Вместо того, чтобы просить нас предсказать любые потенциальные проблемы, обновите и попробуйте. Спросите здесь, если вам нужна помощь в решении конкретных вопросов. Мы не знаем, какую версию Rails или какие драгоценные камни вы используете.   -  person Substantial    schedule 25.02.2013


Ответы (2)


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

Bundler 1.2.x несовместим, он вызывает ошибку, говорящую об обновлении до >= 1.3, которая еще не выпущена. Поэтому, если вы используете RVM, перейдите в свой глобальный gemset для Ruby 2.0 и обновитесь до версии 1.3.pre, пока не будет выпущена версия 1.3.0. Также кажется, что что-то не так с API rubygems. В моей установке пакета не использовался новый 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 % сокращается время создания объекта.

person Cluster    schedule 24.02.2013
comment
перейти к вашему глобальному набору драгоценных камней для версии 2.0, это файл драгоценных камней приложений? Или это что-то отдельное? Недавно я начал использовать RVM. Спасибо за понимание! - person Brian Petro; 25.02.2013
comment
Нашел. В .rvm/гемсеты. stackoverflow.com/questions/4007171/ - person Brian Petro; 25.02.2013
comment
Да, у RVM есть глобальный гемсет для каждого установленного ruby. Здесь он устанавливает упаковщик, грабли и сам rvm. Кроме того, мне нравится устанавливать такие драгоценные камни, как pry/hub/debugger, чтобы они были доступны везде. - person Cluster; 25.02.2013
comment
@Cluster: Используете ли вы рубины, которые были скомпилированы (а не предварительно собраны двоичные файлы) с помощью RVM? Я пытаюсь воспроизвести этот тест, так как на самом деле заметил замедление при переключении приложения Rails на 2.0.0. Итак, я провел тест создания объектов, сравнивая 1.9.3p392 и 2.0.0p0, и 2.0 фактически занял в 2 раза больше времени, чем 1.9.3 на той же машине... - person jcoleman; 27.02.2013
comment
Скомпилированный, RVM не был предварительно собран для моей установки. У меня 32-битная Ubuntu 12.04. - person Cluster; 28.02.2013
comment
Это GCC как компилятор? - person jcoleman; 28.02.2013
comment
gcc версии 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) - person Cluster; 28.02.2013
comment
Как 25s -> 22s падает на 50%? - person AJcodez; 03.03.2013
comment
Я там сравнивал время загрузки. Я обновил, чтобы включить время загрузки, и добавил фактический % времени выполнения 1,9 с. - person Cluster; 03.03.2013
comment
Хотя это не имеет отношения к заданному вопросу, я люблю бенчмарки, очень интересно. - person Mike Campbell; 05.03.2013

Я начал новый проект с rails 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
person Brian Petro    schedule 01.03.2013