Как лучше всего справиться с изменениями схемы именования в приложении Rails - PullRequest
2 голосов
/ 02 ноября 2009

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

I'mнемного обеспокоен тем, что с течением времени наличие старых имен в кодовой базе для всех методов, маршрутов и имен классов будет трудно читать и поддерживать.

Какой лучший способ справиться с такими изменениями?

А где же должны быть ошибки, когда псевдонимы методов и имен классов или здесь выполняются миграции?

Спасибо

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Если приложение находится в стадии разработки и еще не запущено в производство, вы можете просто вернуться и переименовать миграции / модели / представления и т. Д. И сделать rake db:migrate:reset и покончить с этим. У вас должно быть достаточно тестов, чтобы убедиться, что переименование ничего не нарушает, и если это произойдет, вам следует увеличить охват тестами в этой области.

Поскольку это делается для приложения, которое в данный момент находится в производстве, я предлагаю делать это постепенно, чтобы уменьшить площадь поверхности для изменения:

Изменить маршруты

Это, наверное, самое большое изменение. Первое обновление ваших маршрутов даст вам возможность исправить все ваши представления.

Обновление ваших моделей / контроллеров

Вы можете сделать это без изменения базы данных. Вы можете сделать так, чтобы ваша модель указывала на новую таблицу базы данных, используя set_table_name "OldTable". Это означает, что вы можете вносить любые изменения в базу данных вне диапазона релиза.

Изменить базу данных

Надеюсь, вы используете миграцию, в этом случае просто переименуйте таблицу и удалите имя_установки.

0 голосов
/ 02 ноября 2009

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

После переименования я загружал приложение в промежуточной среде с живыми данными для проверки миграции, а затем запускал что-то вроде тарантула (http://github.com/relevance/tarantula), чтобы сканировать ваше приложение в поисках очевидных неработающих проблем. что вы и ваши тесты, возможно, пропустили.

...