module Operatic::ClassMethods
Public Instance Methods
call(attrs = nil)
click to toggle source
The main way of calling an operation.
The class is instantiated with supplied attrs
and calls {Operatic#call} returning a frozen {Result} instance.
@param attrs [Hash<Symbol, anything>] an optional hash of key/values to
to the result. The class must have corresponding +attr_reader+s
@return a [Result]
# File lib/operatic.rb, line 21 def call(attrs = nil) new(attrs) .tap(&:call) .result .freeze end
call!(attrs = nil)
click to toggle source
Calls {#call} but raises {FailureError} if the returned {Result} is a {Result#failure?} - useful for things like background jobs, rake tasks, test setups, etc.
@return [Result]
# File lib/operatic.rb, line 33 def call!(attrs = nil) call(attrs).tap { |result| raise FailureError if result.failure? } end
result(*args)
click to toggle source
Define a {Result} subclass with named accessors specific to the class via {Result.generate}.
@example
class SayHello include Operatic attr_reader :name result :message def call success!(message: "Hello #{name}") end end result = SayHello.call(name: 'Dave') result.success? # => true result.message # => "Hello Dave"
# File lib/operatic.rb, line 58 def result(*args) @result_class = Result.generate(*args) end
result_class()
click to toggle source
# File lib/operatic.rb, line 62 def result_class @result_class || Result end