Ruby on Rails tương thích với phiên bản Ruby nào?


82

Tôi có một ứng dụng Ruby on Rails 2.1.1 cũ, với hệ thống được nâng cấp để sử dụng Ruby 1.8.7. Ban đầu nó được sử dụng 1.8.5 hoặc lâu hơn.

Tôi muốn nâng cấp nó lên Ruby 1.9.x vì lý do hiệu suất và có thể là Ruby on Rails mới hơn.

Tôi không thể tìm thấy bất kỳ biểu đồ dễ dàng nào về khả năng tương thích giữa các phiên bản Ruby khác nhau và các phiên bản Ruby on Rails.

2.1.1 có hoạt động với Ruby 1.9.x không? Nếu không, tôi cần phải nâng cấp nó trước bao xa và tôi có thể gặp phải những vấn đề gì? Ứng dụng của tôi thực hiện những việc phức tạp đối với lớp cơ sở dữ liệu, nhưng phần còn lại khá đơn giản.


Tôi không biết chính xác phiên bản của Ruby on Rails làm việc với mà Ruby, nhưng tôi nghĩ rằng cách tốt nhất để kiểm tra phiên bản khác nhau tương thích là cài đặt RVM
Michał Czapko

Không chắc Rails 2.1.1 hỗ trợ Ruby 1.9, vì Ruby 1.9.0 được biết là có rất nhiều lỗi với Rails và Ruby 1.9.1 được phát hành sau Rails 2.1.1.
Andrew Marshall,

Phiên bản Ruby cuối cùng mà Rails 3.2.22.5 hỗ trợ là Ruby 2.3.6 . Sau đó, bạn cần cập nhật Rails lên 4+.
Joshua Pinter

Câu trả lời:


106

Đây là một câu hỏi cũ, nhưng thực tế là đường ray được thử nghiệm dựa trên một phiên bản của ruby ​​là một dấu hiệu tốt cho thấy nó sẽ hoạt động trên phiên bản đó của ruby.

Kể từ ngày 9 tháng 4 năm 2019, các nhánh ổn định của Rails sử dụng Buildkite để kiểm tra tự động và danh sách các phiên bản ruby ​​được thử nghiệm, theo nhánh rails, là:

Đường ray 6.0

  • >= 2.5.0

Đường ray 5.2

Đường ray 5.1

  • >= 2.2.2

Đường ray 5.0

  • >= 2.2.2

Đường ray 4.2

  • >= 1.9.3

Đường ray 4.1

  • >= 1.9.3

Trước ngày 9 tháng 4 năm 2019, các nhánh ổn định của Rails kể từ 3.0 sử dụng travis-ci để kiểm tra tự động và danh sách các phiên bản ruby ​​được thử nghiệm, theo nhánh rails, là:

Đường ray 3.0

  • 1.8.7
  • 1.9.2
  • 1.9.3

Đường ray 3.1

  • 1.8.7
  • 1.9.2
  • 1.9.3

Đường ray 3.2

  • 1.8.7
  • 1.9.2
  • 1.9.3
  • 2.0.0
  • 2.1.8
  • 2.2.6
  • 2.3.3

Đường ray 4.0

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2,2

Đường ray 4.1

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2.4
  • 2.3.0

Đường ray 4.2

  • 1.9.3
  • 2.0.0-p648
  • 2.1.10
  • 2.2.10
  • 2.3.8
  • 2.4.5

Đường ray 5.0

  • 2.2.10
  • 2.3.8
  • 2.4.5

Đường ray 5.1

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Đường ray 5.2

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Đường ray 6.0

  • 2.5.3
  • 2.6.0

(Từ https://www.hmallett.co.uk/2018/08/ruby-and-ruby-on-rails-version-compatibility/ )


Cảm ơn bạn. FYI biểu mẫu nhận xét trên trang web của bạn không hoạt động, nó yêu cầu email nhưng không có trường như vậy ở đó.
Ruan Carlos

1
Phiên bản mới nhất của Rails là 5.2.3. Tôi tự hỏi liệu tôi có nên cài đặt Ruby 2.6.3 cho nó (phiên bản mới nhất)
Qasim

1
Có quá nhiều lỗi phụ thuộc vào thay đổi để Rails 4.1với ruby2.3.0
Vishwas Nahar

Đường ray 4.1 không thể cao hơn Ruby 2.6.x
Joshua Pinter

46

Đối với phiên bản <3.2: http://www.devalot.com/articles/2012/03/ror-compatibility

Đối với phiên bản> = 4.0:

  • Rails 4 đề xuất 2.0 (src: blog Rails)
  • Rails 4.1 / 4.2 đề xuất 2.1 (src: Trang tải xuống trước đây của Rails)
  • Rails 4.2.1 đề xuất 2.2 (src: Trang tải xuống trước đây của Rails)
  • Rails 5.0 yêu cầu 2.2.2+ ( blog Rails )

Đường ray 3.2

Tôi đã thử bước ra khỏi các khuyến nghị đó (chủ yếu chạy Rails 3.0 trên Ruby 2.0 và 2.1), tôi gặp phải nhiều vấn đề kỳ lạ.


1
bạn có thể vui lòng giải thích thêm về những vấn đề kỳ lạ mà bạn gặp phải. Chúng tôi đang cố gắng chạy rails 3.2.19 trên ruby ​​2.1.5 và gặp phải rất nhiều lỗi kỳ lạ liên quan đến các truy vấn do ActiveRecord tạo ra.
Sivakumar

Các vấn đề tương tự như của bạn. Như tôi nhớ, cũng có một số phương pháp bị thiếu và các vấn đề về tính tương thích của đá quý.
gamov

Ray 3.2.13 và cao hơn hỗ trợ ít nhất của Ruby 2.0: stackoverflow.com/a/25165358/3448554
Kelsey Hannan

@gamov liên kết của bạn trông như bị vỡ
Rick Smith

@RickSmith Vâng, không có trang tải xuống nào nữa với thiết kế lại trang Rails, cảm ơn.
gamov

15

Hướng dẫn nâng cấp Ruby on Rails của Rails có một phần về các phiên bản Ruby . Đây có lẽ là nguồn tốt nhất vì nó được kiểm soát bởi nhóm cốt lõi của Rails.

Kể từ tháng 8 năm 2016, Hướng dẫn về đường ray có nội dung:

1.3 Phiên bản Ruby

Rails thường gần với phiên bản Ruby được phát hành mới nhất khi nó được phát hành:

  • Rails 5 yêu cầu Ruby 2.2.2 hoặc mới hơn.
  • Rails 4 thích Ruby 2.0 hơn và yêu cầu 1.9.3 hoặc mới hơn.
  • Rails 3.2.x là nhánh cuối cùng hỗ trợ Ruby 1.8.7.
  • Rails 3 trở lên yêu cầu Ruby 1.8.7 trở lên. Hỗ trợ cho tất cả các phiên bản Ruby trước đã chính thức bị loại bỏ. Bạn nên nâng cấp càng sớm càng tốt.

1
Rails 5.1 thông báo hỗ trợ ruby ​​2.4, vì vậy tôi cho rằng điều đó có nghĩa là rails 5.0 không hỗ trợ nó. Xem blog.michelada.io/whats-new-in-rails-51
iheggie

13

Rất khó để tìm thấy nó trong ghi chú phát hành. Sau khi googling một thời gian, tôi chỉ có thể tìm thấy nó ở đây http://www.devalot.com/articles/2012/03/ror-compatibility

Khả năng tương thích với phiên bản Ruby Rails


7
Điều này đã khá lỗi thời bây giờ ... Tôi sẽ không dựa vào điều này nữa.
yekta

Có, bảng ở đây đã lỗi thời, vui lòng xem câu trả lời cập nhật của tôi.
gamov

Nếu bạn cố gắng Rails 4 với Ruby 1.9.3 bạn nhận được một lỗi nói rằng bạn cần của Ruby v 2.2.2 hoặc cao hơn
Hack-R

7

Từ ghi chú phát hành Rails 2.2: (không phải chính xác như bạn đã hỏi)

Cùng với sự an toàn của luồng, rất nhiều công việc đã được thực hiện để Rails hoạt động tốt với JRuby và Ruby 1.9 sắp tới. Với việc Ruby 1.9 là một mục tiêu di động, việc chạy Rails trên cạnh Ruby vẫn là một đề xuất trúng hoặc bỏ lỡ, nhưng Rails đã sẵn sàng chuyển sang Ruby 1.9 khi phiên bản sau được phát hành.

Tôi tin rằng Rails 2.1.1 không tương thích với Ruby 1.9 và bạn sẽ tự làm việc trong môi trường như vậy. Tất nhiên, bạn có thể thử nếu bộ đồ thử nghiệm của bạn là toàn diện. Ngoài ra, bạn phải kiểm tra tất cả các viên ngọc khác được sử dụng trong dự án, điều này có thể là một rắc rối thực sự.

Nếu bạn chọn gắn bó với phiên bản Rails này, tôi sẽ không chuyển sang 1.9.x. Như bạn đã đề cập, bạn muốn nâng cấp nó hơn, có lẽ bạn nên xem qua các lỗi không được đề cập trong ghi chú phát hành Rails 3.0 và điều chỉnh mã của bạn. Bạn có thể tìm thấy danh sách tóm tắt trong các API và phương thức không dùng nữa của Rails 3


Tôi chủ yếu muốn Ruby 1.9 vì lý do hiệu suất và muốn nâng cấp Rails ít nhất có thể trong khi vẫn có thể sử dụng Ruby 1.9.x ngay bây giờ vì điều này sẽ gây ra sự cố. Rails 2.2 có hoạt động với Ruby 1.9 không?
taw

1
@taw Sau đó, tôi muốn nâng cấp lên Rails 2.3. Theo ghi chú phát hành , nó hỗ trợ đúng Ruby 1.9.1
Marcelo Diniz

4

Nói chung, có hai nơi để kiểm tra xem nền tảng Ruby có phù hợp với phiên bản Rails ưa thích của bạn hay không.

  1. Thông báo phát hành trong blog Rails
  2. Ghi chú phát hành trong guides/sourcethư mục (cũng có trên web tại Rails GuidesGithub )

Bạn cũng có thể thấy hữu ích khi xem .travis.ymltệp phiên bản của mình. Các rvmmục có gợi ý các phiên bản của Ruby mà các nhà phát triển có thể chạy kiểm tra tự động chống lại.

Đương nhiên, hãy sử dụng các đề xuất của họ cùng với thử nghiệm của riêng bạn.


3

Rails Guides có thông tin trong "Bắt đầu với Rails". Tôi lấy thông tin từ mỗi phiên bản của hướng dẫn:

Rails 3.2 - The Ruby language version 1.8.7 or higher
Rails 4.0 - The Ruby language version 1.9.3 or newer
Rails 4.1 - The Ruby language version 1.9.3 or newer
Rails 4.2 - The Ruby language version 1.9.3 or newer

Theo như tôi có thể nói, điều này gần với nguồn chính nhất mà bạn có thể nhận được cho các phiên bản tối thiểu . Xem câu trả lời của gamov cho các phiên bản được đề xuất.


1
Hãy cẩn thận với điều này vì cũng có phiên bản Ruby tối đa mà phiên bản Rails có thể sử dụng. Xem câu trả lời của tôi (ví dụ Rails <3.2.22 không hỗ trợ của Ruby 2.2)
gamov

@gamov Cảm ơn, tôi đã cập nhật câu trả lời của mình để nói rằng đây là những phiên bản tối thiểu.
Rick Smith,

1

câu trả lời đầu tiên ở đây là khá nhiều thông tin, nhưng tôi có một lời nhận xét về sự phù hợp của rails-4.2với ruby-2.4.5, như có một vấn đề thể hiện ở đây , vấn đề mà làm cho rails-2.4.8chỉ tương thích với ruby-2.4+, bất kỳ phiên bản khác của đường ray-2.4 sẽ không làm việc.


1

Tất cả những trang đó đều có trạng thái hiện tại. Và tài liệu trên các tài liệu chính thức là mơ hồ "Phiên bản ngôn ngữ Ruby ... hoặc cao hơn". Nếu bạn muốn biết phiên bản Ruby nào, phiên bản Rails bạn muốn biết được kiểm tra dựa trên Travis CI mà cộng đồng Rails đang sử dụng. Tại đây bạn có thể thấy nhánh nào được thử nghiệm phù hợp với phiên bản Ruby nào.

Biên tập:

Giống như hmallett đã đề cập, Rails đã chuyển sang một bộ thử nghiệm khác. Nó đã được đổi thành Built kite . Bạn luôn có thể kiểm tra Trạng thái mã tại kho lưu trữ nguồn.


Travis CI đã không được sử dụng cho Rails kể từ ngày 9 tháng 4 năm 2019.
hmallett

Bạn đúng là họ đã thay đổi bộ thử nghiệm khác. Tôi đã chỉnh sửa câu trả lời của mình.
Smek

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.