Module: Operatic::ClassMethods
- Defined in:
- lib/operatic.rb
Instance Method Summary collapse
-
#call(**attrs) ⇒ Failure, Success
The main way to call an operation.
-
#call!(**attrs) ⇒ Success
The same as #call but raises FailureError if the returned #result is a Failure - useful for things like background jobs, rake tasks, test setups, etc.
-
#data_attr(*attrs) ⇒ Object
Define a class-specific Data subclass with the named accessors added via Data.define.
- #data_class ⇒ Class<Data>
Instance Method Details
#call(**attrs) ⇒ Failure, Success
The main way to call an operation. This initializes the class with the supplied attrs keyword arguments and calls Operatic#call returning a frozen Result instance.
20 21 22 23 24 |
# File 'lib/operatic.rb', line 20 def call(**attrs) operation = new(**attrs) operation.call operation.result || Success.new(operation.data).freeze end |
#call!(**attrs) ⇒ Success
The same as #call but raises FailureError if the returned Operatic#result is a Failure - useful for things like background jobs, rake tasks, test setups, etc.
35 36 37 38 39 |
# File 'lib/operatic.rb', line 35 def call!(**attrs) call(**attrs).tap { |result| raise FailureError if result.failure? } end |
#data_attr(*attrs) ⇒ Object
Define a class-specific Data subclass with the named accessors added via Data.define.
63 64 65 |
# File 'lib/operatic.rb', line 63 def data_attr(*attrs) @data_class = Data.define(*attrs) end |
#data_class ⇒ Class<Data>
68 69 70 |
# File 'lib/operatic.rb', line 68 def data_class @data_class || Data end |