module Zen::Service::Plugins::Executable

Attributes

state[R]

Public Class Methods

new(*) click to toggle source
# File lib/zen/service/plugins/executable.rb, line 58
def initialize(*)
  @state = self.class::State.new(executed: false)
end
used(service_class, *) click to toggle source
# File lib/zen/service/plugins/executable.rb, line 51
def self.used(service_class, *)
  service_class.const_set(:State, Class.new(State))
  service_class.add_execution_prop(:executed, :success, :result)
end

Public Instance Methods

execute(*, &block) click to toggle source
# File lib/zen/service/plugins/executable.rb, line 66
def execute(*, &block)
  clear_execution_state!
  result = execute!(&block)
  result_with(result) unless state.has_result?
  state.executed = true

  self
end
executed?() click to toggle source
# File lib/zen/service/plugins/executable.rb, line 75
def executed?
  state.executed
end
failure?() click to toggle source
# File lib/zen/service/plugins/executable.rb, line 149
def failure?
  !success?
end
initialize_clone(*) click to toggle source
# File lib/zen/service/plugins/executable.rb, line 62
def initialize_clone(*)
  clear_execution_state!
end
result() { || ... } click to toggle source
# File lib/zen/service/plugins/executable.rb, line 128
def result
  return state.result unless block_given?

  result_with(yield)
end
success?() click to toggle source
# File lib/zen/service/plugins/executable.rb, line 145
def success?
  state.success == true
end

Private Instance Methods

assign_failed_result(value) click to toggle source
# File lib/zen/service/plugins/executable.rb, line 124
        def assign_failed_result(value)
  state.result = value
end
assign_failed_state() click to toggle source
# File lib/zen/service/plugins/executable.rb, line 115
        def assign_failed_state
  state.success = false
  state.result = nil
end
assign_successful_result(value) click to toggle source
# File lib/zen/service/plugins/executable.rb, line 120
        def assign_successful_result(value)
  state.result = value
end
assign_successful_state() click to toggle source
# File lib/zen/service/plugins/executable.rb, line 110
        def assign_successful_state
  state.success = true
  state.result = nil
end
clear_execution_state!() click to toggle source
# File lib/zen/service/plugins/executable.rb, line 87
        def clear_execution_state!
  state.clear!
  state.executed = false
end
execute!() click to toggle source
# File lib/zen/service/plugins/executable.rb, line 83
        def execute!
  success!
end
failure(**) { || ... } click to toggle source
# File lib/zen/service/plugins/executable.rb, line 97
        def failure(**)
  assign_failed_state
  assign_failed_result(yield)
end
failure!(**) click to toggle source
# File lib/zen/service/plugins/executable.rb, line 106
        def failure!(**)
  assign_failed_state
end
result_with(obj) click to toggle source
# File lib/zen/service/plugins/executable.rb, line 134
        def result_with(obj)
  return state.replace(obj) if obj.is_a?(State)

  state.success = !!obj
  if state.success
    assign_successful_result(obj)
  else
    assign_failed_result(obj)
  end
end
success(**) { || ... } click to toggle source
# File lib/zen/service/plugins/executable.rb, line 92
        def success(**)
  assign_successful_state
  assign_successful_result(yield)
end
success!(**) click to toggle source
# File lib/zen/service/plugins/executable.rb, line 102
        def success!(**)
  assign_successful_state
end