2015-01-12 3 views
1

У меня довольно простая проблема, мне нравится переименовывать модель под названием «Человек» в «Пользователь».Тщательное рефакторинг для переименования моделей рельсов?

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

  • имя контроллера
  • контроллер принял параметры
  • Контроллер имена переменных
  • Маршруты
  • Просмотр папки Имя
  • Просмотр Ссылки по теме
  • Имена активов
  • Характеристики
  • Светильники

И более сложные, такие как имена ассоциаций, таких как «person_id».

В Интернете я нашел решения, которые поцарапали поверхность, такую ​​как Рефакторинг в RubyMine. Я могу задать вопрос: Да/Нет интерактивное решение на основе оболочки, которое проходит через процесс. Без этого, особенно в крупных/зрелых проектах, это очень утомительный и подверженный ошибкам процесс.

Любые решения?

+0

Я не вижу никаких волшебных инструментов для этого. Просто попробуйте найти и заменить. Это может помочь вам немного. –

ответ

1

Выделите ваш любимый текстовый редактор и используйте Find and Replace.

Возможно, на первый взгляд этот метод может быть громоздким; но в подходе есть ценность.

  1. Поиск встроен в ваш редактор и прост в использовании.
  2. Вы можете посмотреть каждое конкретное событие, а THEN получить или заменить его. Примечание: это может сэкономить вам немного времени, поскольку вы не можете «означать», чтобы изменить значение, но с автоматическим поиском/заменой без каких-либо проверок вами вы можете обнаружить себя в течение некоторого времени. find/replace заменили что-то, что не предназначалось для изменения.

В вашем примере Person (User) и person_id (user_id) 3. Вы делаете только исправления, необходимые для запуска следующих тестов. пример: смените пользователя на пользователя, затем запустите тестовый набор, чтобы убедиться, что ничего не сломано, если это исправить. Затем перейдите к следующему слову (-ам), которое вам нужно изменить, в этом случае оно было person_id для user_id. Когда вы меняли Person, не имеет значения, что person_id еще не изменен (если вы не используете имя класса, чтобы сделать какую-либо переменную, которую вы найдете во время # 2 в любом случае). Теперь вы проходите процесс изменений, чтобы найти person_id и т. Д., Повторяя при необходимости.

Мне лично нравится видеть, как происходят все изменения, так как мне не нравится вводить неизвестные ошибки, которые я бы потратил еще больше времени на TS'ing.

Это не то, что вы искали, но, возможно, это помогает.

+0

Это работает.Но я искал более автоматический подход, который создает все необходимые миграции и переименовывает все ссылки в базе кода. –

+0

. Я изучаю это, и если проект выходит за пределы миграции 0, и вы добавляете исходные данные на сервер с использованием модели миграции и рельсов, что, возможно, странно, но это можно сделать, тогда вы получите уловку 22. Таким образом, эти «старые миграций "с использованием кода модели, который был переименован, больше не может быть использован и нуждается в изменении. Так как я довольно новичок в работе с рубинами/рельсами: я мог бы указывать на ружье на носках здесь –

Смежные вопросы