Class: Mona::ResultAction::Ephemeral

Inherits:
Object
  • Object
show all
Includes:
Mona::ResultAction
Defined in:
lib/mona/result_action.rb

Overview

You can create an Ephemeral Action as follows:

Example:

compute = Mona::ResultAction::Ephemeral.new do |x, y|
  set :numerator, x
  puts "set numerator: #{numerator}"
  set :denominator, y.zero? ? Result.failure(y, :zero) : y
  puts "set denominator: #{denominator}"
  set :answer, numerator / denominator
  puts "answer: #{answer}"
end

> compute.call(10,2)
set numerator: 10
set denominator: 2
answer: 5
=> #<Result success: {:numerator=>10, :denominator=>2, :answer=>5}>

> compute.call(10,0)
set numerator: 10
=> #<Result failure: {:numerator=>10, :denominator=>0}, error: {:error=>:zero, :on=>:denominator}>

Mona::ResultAction() is a shortcut for this

Instance Method Summary collapse

Methods included from Mona::ResultAction

#call

Constructor Details

#initialize(&perform) ⇒ Ephemeral

Returns a new instance of Ephemeral.



56
57
58
# File 'lib/mona/result_action.rb', line 56

def initialize(&perform)
  @perform = perform
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Mona::ResultAction

Instance Method Details

#perform(*args, **kwargs) ⇒ Object



60
# File 'lib/mona/result_action.rb', line 60

def perform(*args, **kwargs) = instance_exec(*args, **kwargs, &@perform)