Module: SpreeCmCommissioner::ServiceModuleThrowable
- Included in:
- InventoryItems::BulkAdjustQuantities, InventoryItems::BulkAdjustQuantitiesByVariant, InventoryItems::BulkAdjustQuantitiesOnHold, InventoryItems::BulkGeneratePermanentItems, InventoryItems::GenerateNonPermanentItem, InventoryItems::Reset, RedisStock::Base, ReservedBlocks::Cancel, ReservedBlocks::Hold, ReservedBlocks::Reserve
- Defined in:
- lib/spree_cm_commissioner/service_module_throwable.rb
Overview
Module to add a bang (!) version of a service call that raises an exception on failure.
Usage:
# Standard service call returns a result object
result = Service.call
result.success? # => true/false
result.error # => Spree::ServiceModule::ResultError object if failure
# Bang version raises an exception on failure
begin
result = Service.call!
result.value
rescue SpreeCmCommissioner::ServiceFailure => e
e.error # => Spree::ServiceModule::ResultError object
end
This is useful when you want to propagate failures and possibly trigger a transaction rollback, instead of manually checking ‘result.failure?`.
Instance Method Summary collapse
Instance Method Details
#call! ⇒ Object
32 33 34 35 36 37 |
# File 'lib/spree_cm_commissioner/service_module_throwable.rb', line 32 def call!(*, **) result = call(*, **) raise ServiceFailure, result.error if result.failure? result end |