Релиз 3.0
Были подготовлены и реализованы следующие изменения.
Архитектура
Stroma
- Stroma — ядро библиотеки, отвечающее за управление модулями, хуками и расширениями.
- Добавлена система хуков
beforeиafterдля кастомизации сервисов. - Реорганизована структура с иерархическим хранением настроек модулей.
Конфигурация
- Рефакторинг для предотвращения shared state между родительскими и дочерними классами.
Атрибуты
Динамические опции
- Добавлена опция
targetдля валидации классов; - Добавлена поддержка Range в опции
inclusion; - Улучшена валидация: nil guards, проверка типов в format, точность Float.
Действия
Stage
- Улучшена функциональность stage;
- Переименованы методы:
should_skip?,condition_met?.
Расширения
- Расширения теперь работают через систему хуков Stroma с поддержкой
beforeиafter; - Добавлены примеры расширений: Authorization, Transactional, Idempotent, Rollbackable и др.;
- Добавлен генератор для создания расширений.
Подробнее в документации расширений.
Тестирование
RSpec
- Редизайн Test Kit с модульной архитектурой Registry DSL;
- Добавлен Fluent API для мокирования сервисов;
- Добавлена поддержка cross-service exception handling.
Генераторы Rails
Добавлены и улучшены генераторы для Rails:
servactory:install— установка и настройка;servactory:service— создание сервисов с поддержкой inputs и типизации;servactory:rspec— создание RSpec тестов;servactory:extension— создание расширений.
Улучшения включают: поддержку кастомных путей, нормализацию типов, расширенную совместимость с Rails 5.1-8.1.
I18n
Добавлены новые локали: немецкий (de), французский (fr), испанский (es), итальянский (it).
Ruby
Была проверена поддержка Ruby 4.0.0.
Rails
Была проверена поддержка Rails 8.1.
Прочее
Релиз также содержит прочие исправления и улучшения.