Я также обдумывал этот вопрос с некоторыми 5-летними проектами - я продолжать использовать рельсы 2.3.18 LTS https://railslts.com/, или перейти на рельсы 4.2, зная, что нужно будет смотреть на ежегодно/раз в два обновлении версия рельсов. Я подозреваю, что буду успешнее проводить выборочную замену по мере разработки новых функциональных возможностей.
Во всяком случае, информация, которую я нашел, кажется, указывает, что это большой шаг за шагом процесс:
Это сообщение может быть полезен - https://groups.google.com/d/msg/rubyonrails-talk/y0q1fc8N_GU/H2xOsy2mYpwJ
В этом Роб Биденхарна предлагает
• обновление rails-2.3.18 На самом деле нет причин для этого и PLENTY по уважительным причинам, что вы должны были это сделать уже. 2.3.9 (2010-09-04) была версия, которая впервые дала предупреждения об отказе от обновления для рельсов-3.0 2.3.18 (2013-03-18) была последней версией в строке 2.3 и содержит исправления для наименее 10 уязвимостей (некоторые из них весьма серьезных!)
• получить все ваши тесты, чтобы пройти (если вы не имеют тесты, вы бы лучше верить) • адреса всех устареваний предупреждения
• не обновлять рубин еще https://developer.uservoice.com/blog/2012/03/04/how-to-upgrade-a-rails-2-3-app-to-ruby-1-9-3/ Но вам, возможно, придется перейти на рубин-1.8.7, поскольку rails-3.0 официально не поддерживает 1.8.6)
О, и я взглянул на http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html, как предложил Джейсон Флитвуд-Болдт, и у этого есть БОЛЬШОЕ подробное прохождение, хотя процесс обновления от 3.0 до 4.1 , Но если у вас нет времени, чтобы пойти и посмотреть на это самостоятельно, то, возможно, я дал вам достаточно, чтобы взвесить пути обновления v. Rewrite.
• перейти на рельсы-3.0.0 (возможно, даже непосредственно к рельсам-3.0.20) • получить все тесты пройти
• обновление до рубиново-1.9.2 (или, возможно, даже рубин-1.9 +0,3) • получить все ваши тесты, чтобы пройти
• перейти на рельсы-3.1.12 (последняя из линии рельсы-3.1) Это не может быть строго требуется, но 3,1 представил трубопроводный Asset и также Jquery рамки JavaScript по умолчанию. Если у вас есть много использования Prototype или Scriptaculous в приложении, вероятно, было бы хорошей идеей, чтобы преобразовать его в JQuery (и получить https://github.com/rails/jquery-ujs) • получить все тесты пройти
• перейти на рельсы-3.2. 19 • получить все тесты пройти
• обновление до рубиново-2.1.2 (там, наверное, нет оснований использовать только 2.0 в этой точке) • получить все тесты пройти
• перейти на рельсы -4.0.8 • получите все ваши тесты, чтобы пройти
• перейти на рельсы-4.1.4 • справиться с новым secrets.yml файла • получить все ваши тесты, чтобы пройти
• взять отпуск
Серьезно, есть много делать, если вам действительно хотите перейти по пути обновления. Я даже не упомянул ни о каких проблемах, с которыми вы почти наверняка сталкиваетесь с драгоценными камнями, которые перестают работать с более новыми версиями Rails или даже с новыми Rubies. Я бы рекомендовал, чтобы вы очень серьезно относились к «обновлению» приложения как к более простому способу приведения приложения в текущий, поддерживаемый RoR-стек.
Сейчас два года спустя, а разрыв еще шире с Rails 5.1 и используется. Моя нынешняя стратегия заключается в том, чтобы не обновлять рельсы до версии 2.3.18 LTS. Вместо этого, когда существует необходимость в том, что рельсы 2.3.18 не обеспечивают (или обеспечивают хорошо), запускайте phoenix параллельно и постепенно перемещайте контроллеры. Я склоняюсь к фениксу для будущих проектов нового проекта. – iheggie