Перейти к основному содержимому
Версия: 1.9

Конфигурация

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

Примеры конфигурации

Ошибки

app/services/application_service/base.rb
module ApplicationService
class Base < Servactory::Base
configuration do
input_error_class ApplicationService::Errors::InputError
output_error_class ApplicationService::Errors::OutputError
internal_error_class ApplicationService::Errors::InternalError

failure_class ApplicationService::Errors::Failure
end
end
end

Хелперы для input

Пользовательские хелперы для input основываются на опциях must и prepare.

Пример с must

app/services/application_service/base.rb
module ApplicationService
class Base < Servactory::Base
configuration do
input_option_helpers(
[
Servactory::Inputs::OptionHelper.new(
name: :must_be_6_characters,
equivalent: {
must: {
be_6_characters: {
is: ->(value:) { value.all? { |id| id.size == 6 } },
message: lambda do |input:, **|
"Wrong IDs in `#{input.name}`"
end
}
}
}
)
]
)
end
end
end

Пример с prepare

app/services/application_service/base.rb
module ApplicationService
class Base < Servactory::Base
configuration do
input_option_helpers(
[
Servactory::Inputs::OptionHelper.new(
name: :to_money,
equivalent: {
prepare: ->(value:) { Money.new(cents: value, currency: :USD) }
}
)
]
)
end
end
end

Алиасы для make

app/services/application_service/base.rb
configuration do
aliases_for_make %i[execute]
end

Сокращения для make

app/services/application_service/base.rb
module ApplicationService
class Base < Servactory::Base
configuration do
shortcuts_for_make %i[assign perform]
end
end
end