2013-04-24 1 views
2

Я изучаю Ruby и Rails, и я планирую написать свое первое приложение, используя TDD через rspec. Но сейчас я нахожу некоторые трения между моими принципами и тем, как работает большинство Rails-сообществ. Большинство примеров и учебных пособий, которые я вижу, говорят мне генерировать мой код. Я могу даже создавать строительные леса для своих объектов вместе с спецификациями rspec в одной команде. Хотя это действительно пятно, это не кажется правильным. Если я создаю кучу свойств и методов, которые мне действительно не нужны сейчас, это нарушает YAGNI, верно?Неужели Ruby on Rails призывает кого-то нарушить YAGNI?

+0

Не большой вентилятор данных генераторов. Единственный, который я использую регулярно, - это «rails g migration». Это действительно личное предпочтение - но я склонен писать то, что мне нужно, для других, поскольку они мне нужны. – nzifnab

ответ

1

Леса могут быть полезным инструментом для быстрого прототипирования, но на самом деле он редко используется в производственных приложениях. Кроме того, строительные леса CRUD-ресурса не собираются генерировать много «лишних вещей». Но в конце концов это просто предпочтение и подгонка. Если вы можете создать эшафот и изменить его, чтобы он соответствовал вашему приложению, и это экономит ваше время. Но в целом вы обнаружите, что проще просто создавать файлы самостоятельно, как только вы узнаете нюансы фреймворка немного больше. Но в целом я не думаю, что строительные леса слишком сильно нарушают YAGNI.

1

Если вы генерируете много вещей, которые вы должны удалить, возможно, вы используете неправильный генератор?

Обратите внимание, что вы должны использовать эшафот для создания модели, которая также будет иметь действия в контроллере. Например, есть другие генераторы, если у вашей модели не должно быть соответствующего контроллера вообще, вы хотите generate model, а не generate scaffold, или если таблица действительно не нужна модель вообще, вы можете использовать generate migration или для контроллера без модели, generate controller и так далее.

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

  • миграции с атрибутами в вашем входе (YGNI)
  • Тестовые файлы (YGNI)
  • записи контроллера для операций CRUD (Maybe YAGNI, Вы можете просто удалить методы, которые вы Дон» t необходимо для файла. Должно быть проще в любом случае, чем печатать весь файл самостоятельно)
  • Просмотров за действия, которые он генерирует в контроллере (снова удалите те, которые вам не нужны)
  • Файл CSS (это должен удалять или редактировать, всегда, если вы планируете перейти к производству)