Как мне обновить приложение Rails, чтобы использовать последнюю версию Rails - PullRequest
4 голосов
/ 22 апреля 2009

Я работаю над приложением Rails, которое в настоящее время использует Rails 1.2, так что теперь я довольно далеко от последнего стабильного выпуска (Rails 2.3).

Как мне перейти к процессу перехода на более новую версию Rails?

Должен ли я обновлять одну версию за раз или сразу до Rails 2.3?

Как узнать, что изменилось между версиями Rails, обе

  • улучшений или новых функций, которые дают мне больше причин для обновления
  • Изменения в Rails, которые потребуют от меня изменения моего приложения, прежде чем оно будет работать с новой версией.

(я видел этот вопрос о механике обновления, но меня больше интересует процесс, который я должен пройти, чтобы сделать обновление максимально безболезненным.)

Ответы [ 7 ]

4 голосов
/ 22 апреля 2009

Я прошел через это несколько месяцев назад, провел много исследований и собрал грабли (на основе чужого сценария плюс дополнительные ресурсы), которые могут помочь вам пометить вещи, которые могут измениться в вашем коде. Это было сделано для обновления до Rails 2.2, поэтому он не учитывает изменения в Rails 2.3:

http://gist.github.com/99535

О, не забудьте проверить, что используемые плагины и гемы совместимы с Rails 2.x и используют последние версии.

И я определенно согласен с переходом непосредственно на Rails 2.3 за один раз. И не откладывайте это; Чем дольше вы идете без обновления, тем сложнее будет, как больше будет меняться. И поддерживать код Rails 1.x сложнее, так как есть меньше ресурсов, которые его поддерживают.

2 голосов
/ 07 декабря 2009

Я только начал обновлять приложение Rails 1.2.3 до среды Rails 2.3.4. Основные шаги и предостережения, с которыми я столкнулся:

  • Создание скелетного приложения, аналогичного вашему базовому приложению
  • Проверьте все настройки environment.rb, которые есть в старом приложении, чтобы узнать, требуются ли они в новой версии.
  • Перенос всех файлов .rhtml в .html.erb; либо с использованием сценария или руководства. В моем случае было более 100 файлов, так что автоматизировать это было намного проще
  • Проверьте все routes.rb изменения, которые могут потребоваться, учитывая, что RoR2.3.4 упростил указание маршрутов.
  • Убедитесь, что у вас под рукой хорошая система SCM; например, Git, SVN или даже CVS, чтобы можно было зафиксировать небольшие изменения.
  • Проверьте, какие плагины вам нужны. В начале я просто удалил все плагины, и некоторые из них устарели из-за функциональности, которая должна была быть реализована в перенесенном приложении.
  • Обновить любые form_tag записи; например <%= form_tag :action => 'search' %> становится `<% form_tag: action => 'search' do%>, в противном случае вы получите интересные сообщения об ошибках
  • Аналогично измените <%= end_form_tag%> на закрытие блока, как в `<% end%>
  • Проверьте, есть ли у вас плагины в версии 1.2.3, которые теперь удалены из ядра и должны быть установлены как плагины и настроены для зависимостей. У меня были некоторые проблемы с in_place_edit и звонками во всплывающее окно calendar.

Как уже говорили другие, это может занять больше времени, чем ожидалось. Я сделал около 30 часов работы по миграции. Я оценил, что это займет намного больше времени; так что это было хорошо; но еще предстоит еще немного поработать над созданием PDF.

Просто чтобы сделать его более интересным, приложение работало в среде MS-Windows; Ruby 1.8.7, Rails 1.2.3 и MS SQL Server. Цель состояла в том, чтобы перейти на среду Linux; Ruby 1.9.x, Rails 2.3.4 и база данных MySQL с использованием инструментов миграции базы данных сервера MySQl.

2 голосов
/ 22 апреля 2009

Мой совет - потратить неделю на погашение накопленного долга по тестированию, а затем выполнить обновление одним махом.

Там, где я работаю, мы обновили очень большое приложение с 1.2 до 2.0.2 прошлым летом и в то же время обновили до Ruby 1.8.6.

Это заняло НАМНОГО дольше, чем ожидалось. В приложении использовалось несколько старых функций, которые были удалены или устарели (например, ActionWebService), поэтому их преобразование заняло некоторое время. Но в основном мы столкнулись с множеством мелких ошибок, таких как небольшие различия в работе параметров переключателей, некоторые из которых были связаны с обновлением Ruby (против Rails).

Некоторые части приложения были покрыты пятнистыми тестами. Если бы мы пошли на это с лучшими тестами, все было бы намного проще.

1 голос
/ 22 апреля 2009

Я думаю, что есть некоторые рейк-задачи Rails, которые вы можете получить, которые будут искать устаревшие в вашем приложении.

И пока ваше приложение находится в режиме управления версиями, я выполняю обновление за один раз и проверяю сообщения об ошибках по одному за раз.

Кроме того, кроме страниц заметок о выпуске, которые вы видели для 2.2 и 2.3, должны быть заметки о выпуске или журналы изменений в самом источнике. Кроме того, вы можете искать сообщения в блоге (используйте поиск по блогам Google) с помощью таких поисковых терминов, как «rails x.x.x новые функции» и т. Д.

0 голосов
/ 13 декабря 2009

Вы, вероятно, уже имели достаточно опыта в этом вопросе, но я наткнулся на это, когда искал другой вопрос по обновлению Rails 1.2> 2.3, и подумал, что сам добавлю небольшой совет:

Самый большой разрыв, который у меня был в относительно простом приложении, был с разбиением на страницы. Я обнаружил, что плагин Classic Pagination - находка для этого.

0 голосов
/ 06 июня 2009

Я обнаружил, что в этих документах не хватает нескольких деталей, и переход с 2.1 => 2.2 занял довольно много времени. Вот мои заметки:

Наибольшее время: assert_redirected_to значительно изменилось, больше не поддерживает хэши (вообще?)

Также необходимо установить environment/test.rb, чтобы отключить защиту от подделки

Если бы у кого-то были новости по этим пунктам для 2.3, это было бы супер круто.

0 голосов
/ 22 апреля 2009

Я начну с того, что отвечу на свой вопрос ресурсами, которые мне удалось найти с помощью моего Google. В примечаниях к выпуску Rails 2.2 и в примечаниях к выпуску Rails 2.3 приводятся подробности о новых и измененных функциях в этих двух выпусках, но я не могу найти ничего более определенного для более ранних выпусков.

Я также не нашел много информации о том, что сломается при обновлении, кроме этого объявления о выпуске , в котором упоминается, что более старые версии Passenger не будут работать с Rails 2.3.

...