Любой, кто использовал Rails 1.2.3, 1.2.4 или 1.2.5, возможно, заметил несколько уведомлений об устаревании в своих журналах разработки. Хотя эти устаревшие методы по-прежнему работают, как и ожидалось, в версиях 1.2.x, вы будете придирчивы, когда попытаетесь перейти на Rails 2.0. Итак, что вам нужно сделать и какие инструменты существуют, чтобы помочь вам с переездом? Рад, что ты спросил.
Первое, что вы можете сделать, это запустить свой код с помощью средства проверки кода — Джеффри Грозенбах выпустил отличную задачу с граблями, которая просматривает ваш код в поисках старых методов. Он даст вам подсказки о том, как решить проблемы, но давайте рассмотрим их чуть более внимательно.
@params, @session, @flash, @env
Начиная с Rails 2.0, вы не сможете напрямую обращаться к указанным выше переменным экземпляра. Они были заменены методами, которые значительно упрощают настройку их действий. Это также позволяет внутренним компонентам Rails меняться, не нарушая API. Это очень легко исправить — просто удалите @ перед этими переменными — они будут работать точно так же.
find_all, find_first, render_partial
В более ранней версии Rails было несколько сгруппированных методов, которые делают очень похожие вещи — находят, находят, находят и находят все извлекаемые записи из базы данных, единственное отличие состоит в количестве возвращаемых записей. Было решено объединить эти методы в один, где они различаются по переданным в опциях. Таким образом, find_all становится find (: all), а find_first становится find (: first), а render_partial становится render (: part).
формы
Из всех HTML-помощников тег формы был аномалией, потому что требовал помощника начала и конца. Чтобы он соответствовал принципам работы остальной части Rails и облегчил динамическое создание форм, был создан блочный метод с именем form_tag. В этом конкретном обновлении есть ловушка — поскольку блоки не возвращают значений, используемый вами тег ERB не должен иметь знак =, поэтому
<%= start_form_tag %> <!-- Form stuff --> <%= end_form_tag %>
становится
<% form_tag do %> <!-- Form stuff --> <% end %>
<% form_tag do %> <!-- Form stuff --> <% end %>
Обратите внимание на пропуск знака равенства в последнем примере?
Также обратите внимание, что передача: post =>% gt; истина устарела. С нажимом на RESTfulness форма должна знать о других HTTP-глаголах, положить и удалить, поэтому была создана новая опция:
<% form_tag :method => :post do %> <!-- Form stuff --> <% end %>
<% form_tag :method => :post do %> <!-- Form stuff --> <% end %>
Плагины
Некоторые компоненты ядра рельсов были перенесены в плагины, чтобы не загромождать ядро вещами, которые вы не часто используете. Это также означает, что разработка плагинов может быть намного быстрее, чем разработка ядра. Вероятно, основным извлечением являются сторонние интерфейсы базы данных. Теперь по умолчанию только MySQL, SQLite и PostgreSQL поддерживаются из коробки. Все остальные базы данных поддерживаются через гем с именем activerecord- database -adapter. Если вы хотите использовать Oracle, просто запустите
gem activerecord-oracle-adapter
и ты снова будешь персиком
Другие извлечения примечания — плагины act_as. Если в вашей модели вы используете activ_as_tree или acts_as_list, вам потребуется установить скрипт / плагин, и встроенная пагинация теперь стала плагином classic_pagination. Обратите внимание, что разработчики признают, что плагин медленный (и был медленным, когда он был в ядре), поэтому, если вы используете его, вы можете подумать о переходе на новый и улучшенный плагин will_paginate.
Так что переходите на него и обновляйте свои веб-приложения прямо сейчас, прежде чем спешить!