Вышел Ruby 2.0, см.:
http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/
Какие изменения в моем приложении/установке 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?
Итак, вот что мне пришлось сделать после обновления.
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 % сокращается время создания объекта.
Я начал новый проект с 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