Skip to content

Генераторы Rails

Servactory предоставляет генераторы Rails для типовых задач.

Генератор установки Начиная с 2.5.0

Создаёт базовую инфраструктуру сервисов.

shell
bundle exec rails g servactory:install

Создаваемые файлы

ФайлОписание
app/services/application_service/base.rbБазовый класс сервиса
app/services/application_service/exceptions.rbКлассы исключений
app/services/application_service/result.rbКласс результата

Опции

ОпцияПо умолчаниюОписание
--pathapp/servicesДиректория вывода
--namespaceApplicationServiceБазовый namespace

Примеры

shell
# Установка по умолчанию
bundle exec rails g servactory:install

# Пользовательский namespace
bundle exec rails g servactory:install --namespace=MyApp::Services

# Пользовательский путь
bundle exec rails g servactory:install --path=lib/services

Генератор сервисов Начиная с 2.5.0

Создаёт новый сервис с типизированными входными данными.

shell
bundle exec rails g servactory:service NAME [inputs...]

Опции

ОпцияПо умолчаниюОписание
--pathapp/servicesДиректория вывода

Сокращения типов

СинтаксисРезультат
name или name:stringinput :name, type: String
age:integerinput :age, type: Integer
active:booleaninput :active, type: [TrueClass, FalseClass]
user:Userinput :user, type: User
items:arrayinput :items, type: Array
data:hashinput :data, type: Hash

Примеры

shell
# Базовый сервис
bundle exec rails g servactory:service users_service/create

# С типизированными входными данными
bundle exec rails g servactory:service orders_service/process user:User amount:integer

# Вложенный namespace
bundle exec rails g servactory:service admin/reports/generate started_on:date ended_on:date

Генератор RSpec Начиная с 2.5.0

Создаёт файл RSpec теста для сервиса.

shell
bundle exec rails g servactory:rspec NAME [inputs...]

Опции

ОпцияПо умолчаниюОписание
--pathspec/servicesДиректория вывода

Примеры

shell
# Генерация спеки с входными данными сервиса
bundle exec rails g servactory:rspec users_service/create first_name last_name email

# Для существующего сервиса
bundle exec rails g servactory:rspec orders_service/process

Генератор расширений Начиная с 3.0.0

Создаёт новый модуль расширения.

shell
bundle exec rails g servactory:extension NAME

Опции

ОпцияПо умолчаниюОписание
--pathapp/services/application_service/extensionsДиректория вывода
--namespaceApplicationServiceБазовый namespace

Примеры

shell
# Базовое расширение
bundle exec rails g servactory:extension Auditable

# Вложенный namespace
bundle exec rails g servactory:extension Admin::AuditTrail

# Пользовательский путь
bundle exec rails g servactory:extension Cacheable --path=lib/extensions

Подробнее об использовании см. в разделе Расширения.