| Routes | Связывают URL и действия приложения | RESTful routes, namespaces, constraints | Плодить нестандартные маршруты без причины | Понятную карту API или web-сценариев |
| Controllers | Принимают запрос и вызывают нужную логику | Тонкие controllers, params, responses | Писать бизнес-логику в controller | Request specs и чистый flow запроса |
| Models | Описывают доменные сущности и связи | Состояния, validations, associations | Сделать fat model для всего продукта | Модель с правилами и тестами |
| Views | Отдают HTML-слой, если приложение не API-only | Шаблоны, partials, формы, состояния | Прятать бизнес-логику во view | Форму с ошибками и ролями |
| Active Record | Связывает Ruby-модели с БД | Запросы, scopes, eager loading, SQL | Не смотреть реальные запросы к базе | Оптимизацию N+1 или сложного запроса |
| Migrations | Меняют схему данных | Совместимость, индексы, constraints, rollback plan | Миграция без проверки старых данных | Безопасную миграцию в учебной среде |
| Validations | Проверяют допустимость данных | Где проверять формат, уникальность, состояние | Доверять только frontend-проверке | Тесты ошибок и edge cases |
| Callbacks | Запускают код при событиях модели | Побочные эффекты и порядок выполнения | Спрятать важную бизнес-логику | Пример аккуратной замены callback |
| Associations | Описывают связи между моделями | has_many, belongs_to, dependent, loading | Создать связь без понимания удаления | Модель данных с объяснением связей |
| Service objects | Выносят отдельную операцию | Граница операции и ответственность | Создать хаос из сервисов без правил | Сервис с тестами и явным результатом |
| Jobs | Выполняют фоновые задачи | Очереди, retry, идемпотентность | Повторить вредное действие | Sidekiq-задачу с безопасной повторяемостью |
| Mailers | Отправляют письма и уведомления | Шаблоны, события, тесты, delivery | Отправлять письмо из неожиданного callback | Письмо после явного события |
| Serializers / API responses | Формируют ответы API | Контракт, версии, поля, ошибки | Сломать клиента лишним изменением | Документированный API response |
| Policies / authorization | Проверяют права пользователя | Роли, правила, ограничения доступа | Смешать auth и бизнес-логику | Тесты разных ролей |
| Tests | Защищают бизнес-правила | Unit/request/system, fixtures/factories | Проверять только happy path | RSpec/Minitest набор для ключевого сценария |
| Assets / frontend layer | Поддерживают UI-часть Rails | Шаблоны, JS/CSS, интеграция с SPA | Считать Rails только API без проверки UI | Форму или админку с состояниями |
| Config | Настройки окружений и зависимостей | Secrets, env, initializers, feature flags | Захардкодить чувствительные значения | Безопасную учебную конфигурацию |
| Deploy | Доставляет приложение в среду | Release flow, migrations, rollback thinking | Считать deploy кнопкой без риска | Описание безопасного учебного релиза |
| Monitoring / error tracking | Показывает ошибки после релиза | Logs, Sentry, metrics, owner | Не смотреть последствия изменения | Разбор учебной ошибки и follow-up |