Який Ruby on Rails сумісний з якою версією Ruby?


82

У мене є стара програма 2.1.1 Ruby on Rails із оновленою системою, яка використовує Ruby 1.8.7. Спочатку він використовував 1.8.5 або близько того.

Я хочу оновити його до Ruby 1.9.x з міркувань продуктивності, і, можливо, до більш нового Ruby on Rails.

Я не можу знайти простий графік сумісності між різними версіями Ruby та Ruby on Rails.

Чи буде 2.1.1 працювати з Ruby 1.9.x? Якщо ні, то наскільки мені потрібно спочатку оновити його, і з якими проблемами я маю зіткнутися? Мій додаток робить складні речі на рівні бази даних, але все інше досить просто.


Я не знаю точно, яка версія Ruby on Rails працює з якою Ruby, але я думаю, що найкращий спосіб перевірити сумісність різних версій - це встановити RVM
Міхал Чапко

Навряд чи Rails 2.1.1 підтримує Ruby 1.9, оскільки було відомо, що Ruby 1.9.0 дуже глючить з Rails, а Ruby 1.9.1 вийшов після Rails 2.1.1.
Ендрю Маршалл,

Останньою версією Ruby, яку підтримує Rails 3.2.22.5, є Ruby 2.3.6 . Після цього вам потрібно оновити Rails до 4+.
Джошуа Пінтер

Відповіді:


109

Це старе запитання, але той факт, що rails перевірений на версію рубіну, є хорошим показником того, що він повинен працювати на цій версії рубіну.

З 9 квітня 2019 року стабільні гілки Rails використовують Buildkite для автоматизованого тестування, а перелік перевірених рубінових версій за галузевим напрямком:

Рейки 6.0

  • >= 2.5.0

Рейки 5.2

Рейки 5.1

  • >= 2.2.2

Рейки 5.0

  • >= 2.2.2

Рейки 4.2

  • >= 1.9.3

Рейки 4.1

  • >= 1.9.3

До 9 квітня 2019 року стабільні гілки Rails, починаючи з 3.0, використовують travis-ci для автоматизованого тестування, а список перевірених рубінових версій за галузями rails:

Рейки 3.0

  • 1.8.7
  • 1.9.2
  • 1.9.3

Рейки 3.1

  • 1.8.7
  • 1.9.2
  • 1.9.3

Рейки 3.2

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

Рейки 4.0

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2

Рейки 4.1

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2.4
  • 2.3.0

Рейки 4.2

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

Рейки 5.0

  • 2.2.10
  • 2.3.8
  • 2.4.5

Рейки 5.1

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Рейки 5.2

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Рейки 6.0

  • 2.5.3
  • 2.6.0

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


Дякую. FYI форма коментарів на вашому веб-сайті не працює, потрібна електронна пошта, але там такого поля немає.
Руан Карлос

1
Остання версія Rails - 5.2.3. Цікаво, чи варто встановлювати для нього Ruby 2.6.3 (остання версія)
Касім

1
Існує так багато помилок залежності при переході на Rails 4.1рубін2.3.0
Вішвас Нахар,

Rails 4.1 не може перейти вище Ruby 2.6.x
Джошуа Пінтер

46

Для версій <3.2: http://www.devalot.com/articles/2012/03/ror-compatibility

Для версій> = 4.0:

  • Rails 4 рекомендує 2.0 (src: Rails blog)
  • Rails 4.1 / 4.2 рекомендує 2.1 (src: сторінка завантаження Rails)
  • Rails 4.2.1 рекомендує 2.2 (src: сторінка завантаження Rails)
  • Rails 5.0 вимагає 2.2.2+ ( блог Rails )

Рейки 3.2

Я спробував вийти з цих рекомендацій (головним чином, використовуючи Rails 3.0 на Ruby 2.0 та 2.1), я зіткнувся з кількома дивними проблемами.


1
Ви можете, будь ласка, детальніше розказати про дивні проблеми, з якими стикалися. Ми намагаємося запустити рейки 3.2.19 на ruby ​​2.1.5 і стикаємося з багатьма дивних помилок, пов’язаних із запитами, генерованими ActiveRecord.
Сівакумар

Подібні проблеми, як у вас. Як я пам’ятаю, не було методів і проблем із сумісністю дорогоцінних каменів.
gamov

Rails 3.2.13 і вище підтримує принаймні Ruby 2.0: stackoverflow.com/a/25165358/3448554
Келсі Ханнан,

@gamov ваші посилання здаються недійсними
Rick Smith

@RickSmith Так, більше немає сторінки завантаження із переробленим дизайном сайту Rails, дякую.
gamov

15

Посібник Rails щодо оновлення Ruby on Rails містить розділ про версії Ruby . Це, мабуть, найкраще джерело, оскільки воно контролюється основною командою Rails.

За станом на серпень 2016 року, в Посібнику про рейки зазначено:

1.3 Версії Ruby

Rails зазвичай залишається близьким до останньої випущеної версії Ruby, коли вона виходить:

  • Rails 5 вимагає Ruby 2.2.2 або новішої версії.
  • Rails 4 надає перевагу Ruby 2.0 та вимагає версії 1.9.3 або новішої.
  • Rails 3.2.x - остання гілка, що підтримує Ruby 1.8.7.
  • Для рейок 3 і вище потрібна версія Ruby 1.8.7 або вище. Підтримка всіх попередніх версій Ruby офіційно припинена. Вам слід оновити як можна раніше.

1
Rails 5.1 оголошує про підтримку ruby ​​2.4, тому я припускаю, що означає, що rails 5.0 його не підтримує. Дивіться blog.michelada.io/whats-new-in-rails-51
iheggie

13

Його важко знайти в примітках до випуску. Погугливши деякий час, я міг знайти його лише тут http://www.devalot.com/articles/2012/03/ror-compatibility

Сумісність версії Ruby Rails


7
Зараз це досить застаріло ... Я б більше не покладався на це.
єкта

Так, таблиця тут застаріла, перегляньте мою оновлену відповідь.
гамов

Якщо ви спробуєте Rails 4 з Ruby 1.9.3, ви отримаєте повідомлення про те, що вам потрібен Ruby v 2.2.2 або новішої
версії

7

З примітки до випуску Rails 2.2: (не зовсім той, про який ви просили)

Поряд із безпекою потоків, було зроблено багато роботи, щоб Rails добре працював з JRuby та майбутнім Ruby 1.9. Оскільки Ruby 1.9 є рухомою мішенню, бігові Rails на краю Ruby все ще є пропозицією "потрапи або пропусти", але Rails готова зробити перехід на Ruby 1.9, коли остання буде випущена.

Я вважаю, що Rails 2.1.1 не сумісний з Ruby 1.9, і ви б опинилися в такому середовищі. Звичайно, ви можете спробувати, якщо ваш тестовий костюм всеосяжний. Крім того, вам доведеться перевірити всі інші дорогоцінні камені, використані в проекті, що може спричинити справжні клопоти.

Якщо ви вирішите дотримуватися цієї версії Rails, я б не перейшов на 1.9.x. Як ви вже згадували, що віддаєте перевагу його модернізації, вам, мабуть, слід пройти через припинення використання, згадані в примітках до випуску Rails 3.0, та адаптувати свій код. Узагальнений список можна знайти в застарілих методах та API Rails 3


Я здебільшого хочу Ruby 1.9 з міркувань продуктивності, і хочу якомога менше оновлювати Rails, маючи можливість користуватися Ruby 1.9.x, оскільки це спричинить проблеми. Чи буде Rails 2.2 працювати з Ruby 1.9?
тау

1
@taw Тоді я волів би перейти на Rails 2.3. Згідно з приміткою до випуску , він належним чином підтримує Ruby 1.9.1
Marcelo Diniz 02

4

Загалом є два місця, щоб перевірити, чи підходить платформа Ruby для вашої бажаної версії Rails.

  1. Оголошення про випуск у блозі Rails
  2. Примітки до випуску в guides/sourceкаталозі (також в Інтернеті на Rails Guides та Github )

Вам також може бути корисним переглянути .travis.ymlфайл вашої версії. rvmЗапис там пропонує версію Ruby , що розробники могли б запустити автоматизовані тести проти.

Природно, використовуйте їх рекомендації поряд із власним тестуванням.


3

Raids Guides містить інформацію в розділі "Початок роботи з Rails". Я витягнув інформацію з кожної версії посібників:

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

Наскільки я можу зрозуміти, це настільки близько до першоджерела, скільки ви можете отримати для мінімальних версій. Див . Відповідь Gamov щодо рекомендованих версій.


1
Будьте обережні з цим, оскільки існує також максимальна версія Ruby, яку може використовувати версія Rails. Подивіться мою відповідь (наприклад, Rails <3.2.22 не підтримує Ruby 2.2)
gamov

@gamov Дякую, я оновив свою відповідь, зазначивши, що це мінімальні версії.
Rick Smith

1

перший відповідь тут досить інформативний, але у мене є коментар про сумісність rails-4.2з ruby-2.4.5, так як існує проблема показано тут , що проблема робить rails-2.4.8сумісної тільки з ruby-2.4+будь-яким іншим варіантом не працюватиме рейки-2.4.


1

Усі ці сторінки відстають від поточного стану. А документація в офіційних документах розмита "Мовна версія Ruby ... або новіша". Якщо ви хочете знати, які версії Ruby тестується версія Rails, яку ви хотіли б знати, перевірте Travis CI яку використовує спільнота Rails. Тут ви можете побачити, яка гілка протестована проти якої версії Ruby.

Редагувати:

Як і згадуваний Хмалетт, Rails змінився на інший пакет тестування. Його змінили на Вбудований повітряний змій . Ви завжди можете перевірити статус коду у сховищі джерел.


Travis CI не використовувався для Rails з 9 квітня 2019 р.
hmallett

Ви праві, вони перейшли на інший набір тестів. Я відредагував свою відповідь.
Смек

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.