Module: SafeOperation

Defined in:
lib/safe_operation.rb,
lib/safe_operation/failure.rb,
lib/safe_operation/success.rb,
lib/safe_operation/version.rb

Defined Under Namespace

Classes: Failure, Success

Constant Summary collapse

NoFailureHandler =
Class.new NotImplementedError
VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.either(maybe_block) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/safe_operation.rb', line 10

def self.either(maybe_block)
  raise NoFailureHandler if !block_given?

  if maybe = maybe_block.call
    Success.new maybe
  else
    Failure.new yield
  end
rescue StandardError
  Failure.new yield
end