У меня есть старое приложение 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? Если нет, то как долго мне нужно обновить его в первую очередь и с какими проблемами я могу столкнуться? Мое приложение выполняет сложные задачи на уровне базы данных, но остальное довольно просто.
Ответы:
Это старый вопрос, но тот факт, что rails протестирован против версии ruby, является хорошим показателем того, что он должен работать с этой версией ruby.
С 9 апреля 2019 года стабильные ветки Rails используют Buildkite для автоматического тестирования, а список протестированных версий ruby по веткам rails:
Рельсы 6.0
>= 2.5.0
Рельсы 5.2
>= 2.2.2
< 2.7
(см. https://github.com/rails/rails/issues/38426 )Рельсы 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
Рельсы 3.1
Рельсы 3.2
Рельсы 4.0
Рельсы 4.1
Рельсы 4.2
Рельсы 5.0
Рельсы 5.1
Рельсы 5.2
Рельсы 6.0
(Из https://www.hmallett.co.uk/2018/08/ruby-and-ruby-on-rails-version-compatibility/ )
источник
Rails 4.1
рубиновый2.3.0
Для версий <3.2: http://www.devalot.com/articles/2012/03/ror-compatibility
Для версий> = 4.0:
Рельсы 3.2
Я попытался отойти от этих рекомендаций (в основном использовать Rails 3.0 на Ruby 2.0 и 2.1), у меня возникло несколько странных проблем.
источник
В руководстве Rails по обновлению Ruby on Rails есть раздел о версиях Ruby . Это, вероятно, лучший источник, поскольку он контролируется основной командой Rails.
По состоянию на август 2016 г. в руководстве по Rails говорится:
источник
Его сложно найти в примечаниях к выпуску. После некоторого времени поиска в Google я смог найти его только здесь http://www.devalot.com/articles/2012/03/ror-compatibility
источник
Из примечания к выпуску Rails 2.2: (не совсем то, что вы просили)
Я считаю, что Rails 2.1.1 несовместим с Ruby 1.9, и в такой среде вы будете сами по себе. Вы можете попробовать, если ваш тестовый костюм, конечно, всеобъемлющ. Кроме того, вам нужно будет проверить все другие драгоценные камни, используемые в проекте, что может быть настоящей проблемой.
Если вы решите придерживаться этой версии Rails, я бы не стал переходить на 1.9.x. Как вы упомянули, вы бы предпочли обновить его, вам, вероятно, следует пройти через ограничения, упомянутые в примечаниях к выпуску Rails 3.0, и адаптировать свой код. Обобщенный список можно найти в устаревших методах и API Rails 3.
источник
В общем, есть два места, где можно проверить, подходит ли платформа Ruby для вашей предпочтительной версии Rails.
guides/source
каталоге (также в Интернете в Rails Guides и Github )Возможно, вам также будет полезно посмотреть
.travis.yml
файл вашей версии. Вrvm
Запись там предлагает версию Ruby , что разработчики могли бы запустить автоматизированные тесты против.Естественно, используйте их рекомендации вместе с вашим собственным тестированием.
источник
Информация о 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
Насколько я могу судить, это настолько близко к первоисточнику, насколько вы можете получить для минимальных версий. Рекомендуемые версии см. В ответе Гамова .
источник
первый ответ здесь довольно информативный, но у меня есть комментарий о совместимости
rails-4.2
сruby-2.4.5
, так как существует проблема показано здесь , что проблема делаетrails-2.4.8
совместимой только сruby-2.4+
любым другим вариантом не будет работать рельсы-2.4.источник
Все эти страницы отстают от текущего состояния. И документация в официальных документах расплывчата: «Версия на языке Ruby ... или выше». Если вы хотите знать, какие версии Ruby проверяются на соответствие версии Rails, которую вы хотели бы знать, проверьте Travis CI, который использует сообщество Rails. Здесь вы можете увидеть, какая ветка протестирована и какая версия Ruby.
Редактировать:
Как уже упоминал Хмаллет, Rails был заменен другим набором тестов. Он был изменен на Встроенный кайт . Вы всегда можете проверить статус кода в исходном репозитории.
источник
Я считаю, что эта регрессия говорит о том, что Rails 4.1 не может работать с Ruby 2.3: https://bugs.ruby-lang.org/issues/12353
источник