2013-02-24 22 views
16

của Ruby 2,0 đã được phát hành, xem:Rails Cấu hình cho Ruby 2,0

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

gì thay đổi để Rails của tôi ứng dụng/Cài đặt tôi nên lường trước làm sau khi nâng cấp hệ thống của tôi với Ruby 2.0?

+1

Dường như không có danh sách lớn các sự cố, cập nhật ngay bây giờ để xem cách ứng dụng đường ray trực tiếp xử lý nó. – Cluster

+7

Thay vì yêu cầu chúng tôi báo trước mọi sự cố tiềm ẩn, hãy nâng cấp và dùng thử. Hỏi tại đây nếu bạn cần trợ giúp giải quyết các vấn đề cụ thể. Chúng tôi không biết phiên bản Rails nào hoặc bạn đang sử dụng loại đá quý nào. – Substantial

Trả lời

16

Vì vậy, đây là những gì tôi phải làm sau khi nâng cấp.

Bundler 1.2.x không tương thích, nó nêu ra lỗi khi nâng cấp lên> = 1.3, chưa được phát hành. Vì vậy, nếu bạn đang sử dụng RVM, hãy nhảy vào gemset toàn cầu của bạn cho phiên bản 2.0 ruby ​​và nâng cấp lên phiên bản 1.3.pre cho đến khi 1.3.0 được phát hành. Ngoài ra nó có vẻ như có một cái gì đó với api rubygems. Gói cài đặt của tôi không sử dụng API mới, thay vào đó thực hiện phương pháp 'chỉ mục tìm nạp' cũ, tất nhiên sẽ mất nhiều thời gian hơn một chút.

Bên cạnh đó, gói của tôi đã cài đặt một cách rõ ràng và toàn bộ các bài kiểm tra kỹ thuật của tôi đã hoàn tất với tất cả OK. Tôi đã thực hiện một số thử nghiệm định thời gian để xem thời gian tải của đường ray đã được cải thiện như thế nào.

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

Rõ ràng là thời gian tải cho rspec là một chút nặng với tất cả các đá quý thử nghiệm, nhưng vẫn qua giảm 50% trong thời gian tải và giảm 10% trong thời gian chạy thử nghiệm là tốt đẹp.

Tôi đã làm một thử nghiệm tương tự bằng cách sử dụng rails runner 'puts User.count' sẽ bỏ qua việc khởi động thử nghiệm.

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

Một lần nữa, thoải mái thả hơn 50% :)

Kind nhận đi sai hướng ... đồ chơi mới làm được điều đó tôi đoán, nhưng nó có vẻ như sự thay đổi duy nhất tôi bị buộc phải được nâng cấp cho một gói phát hành trước.

Đây là một thử thách của vòng lặp khác nhau

$ 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) 

Marginal, về mức tăng 4-5%.

Thú vị hơn là thế này, gọi Object.new 500 triệu lần

1.9.3 : 129.063s 
2.0.0 : 97.234s 

Về giảm 25% trong thời gian tạo đối tượng.

+0

"nhảy vào gemset toàn cầu của bạn cho 2.0", đó là gemfile ứng dụng? Hay nó là một cái gì đó riêng biệt? Gần đây tôi đã bắt đầu sử dụng RVM. Cảm ơn sự thấu hiểu! –

+0

Tìm thấy nó. Trong .rvm/đá quý. http://stackoverflow.com/questions/4007171/how-do-i-use-rvm-and-create-globally-available-gems –

+1

Phải, RVM có một viên ngọc toàn cầu cho mỗi ruby ​​được cài đặt. Đó là nơi nó cài đặt bundler, rake và rvm. Thêm vào đó tôi thích cài đặt các gem như pry/hub/debugger để chúng có sẵn ở mọi nơi. – Cluster

6

Tôi đã bắt đầu một dự án mới với đường ray 4 và ruby ​​2.0. Đây là cách tôi đã làm nó.

Trước tiên, tôi đặt RVM thành Ruby 2.0.

Sau đó cài đặt bundler 1.3:

$ gem install bundler 

Cập nhật những đá quý và 'bó cài đặt'.

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 
Các vấn đề liên quan