Какой Ruby on Rails совместим с какой версией Ruby?

82

У меня есть старое приложение Ruby on Rails 2.1.1 с обновленной системой для использования 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 протестирован против версии ruby, является хорошим показателем того, что он должен работать с этой версией ruby.

С 9 апреля 2019 года стабильные ветки Rails используют Buildkite для автоматического тестирования, а список протестированных версий ruby ​​по веткам rails:

Рельсы 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 для автоматического тестирования, а список протестированных версий ruby ​​по веткам 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/ )

Hmallett
источник
Спасибо. К вашему сведению, форма комментариев на вашем сайте не работает, требуется электронная почта, но такого поля там нет.
Руан Карлос
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)
  • 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
не могли бы вы подробнее рассказать о странных проблемах, с которыми вы столкнулись. Мы пытаемся запустить rails 3.2.19 на ruby ​​2.1.5 и сталкиваемся с множеством странных ошибок, связанных с запросами, генерируемыми ActiveRecord.
Сивакумар
Подобные проблемы, как у вас. Насколько я помню, были также отсутствующие методы и проблемы с совместимостью гемов.
gamov
Rails 3.2.13 и выше поддерживает как минимум Ruby 2.0: stackoverflow.com/a/25165358/3448554
Kelsey Hannan
@gamov, похоже, ваши ссылки не работают
Рик Смит,
@RickSmith Да, страницы загрузки с редизайном сайта Rails больше нет, спасибо.
gamov
15

В руководстве Rails по обновлению Ruby on Rails есть раздел о версиях Ruby . Это, вероятно, лучший источник, поскольку он контролируется основной командой Rails.

По состоянию на август 2016 г. в руководстве по Rails говорится:

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.
  • Для Rails 3 и выше требуется Ruby 1.8.7 или выше. Поддержка всех предыдущих версий Ruby официально прекращена. Вам следует выполнить обновление как можно раньше.
pdobb
источник
1
Rails 5.1 объявляет о поддержке ruby ​​2.4, поэтому я предполагаю, что rails 5.0 его не поддерживает. См. Blog.michelada.io/whats-new-in-rails-51
iheggie
13

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

Совместимость версий Ruby Rails

crazycrv
источник
7
Сейчас это уже устарело ... Я бы больше на это не полагался.
yekta 05
Да, таблица здесь устарела, см. Мой обновленный ответ.
gamov 08
Если вы попробуете Rails 4 с Ruby 1.9.3, вы получите сообщение об ошибке, в котором говорится, что вам нужен Ruby v 2.2.2 или выше
Hack-R
7

Из примечания к выпуску Rails 2.2: (не совсем то, что вы просили)

Наряду с безопасностью потоков, была проделана большая работа, чтобы Rails хорошо работал с JRuby и грядущей версией Ruby 1.9. Поскольку Ruby 1.9 является движущейся мишенью, Rails on edge 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?
taw
1
@taw Тогда я бы лучше обновился до Rails 2.3. Согласно примечанию к выпуску , он должным образом поддерживает Ruby 1.9.1
Марсело Диниз
4

В общем, есть два места, где можно проверить, подходит ли платформа Ruby для вашей предпочтительной версии Rails.

  1. Объявление о выпуске в блоге Rails
  2. Примечания к выпуску в guides/sourceкаталоге (также в Интернете в Rails Guides и Github )

Возможно, вам также будет полезно посмотреть .travis.ymlфайл вашей версии. ВrvmЗапись там предлагает версию Ruby , что разработчики могли бы запустить автоматизированные тесты против.

Естественно, используйте их рекомендации вместе с вашим собственным тестированием.

dcorking
источник
3

Информация о Rails 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

Насколько я могу судить, это настолько близко к первоисточнику, насколько вы можете получить для минимальных версий. Рекомендуемые версии см. В ответе Гамова .

Рик Смит
источник
1
Будьте осторожны с этим, потому что существует максимальная версия Ruby, которую может использовать версия Rails. См. Мой ответ (например, Rails <3.2.22 не поддерживает Ruby 2.2)
gamov
@gamov Спасибо, я обновил свой ответ, чтобы указать, что это минимальные версии.
Рик Смит
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
Вы правы, они перешли на другой набор тестов. Я отредактировал свой ответ.
Smek