class Sliver::Runner

Attributes

environment[R]
klass[R]

Public Class Methods

new(klass, environment) click to toggle source
# File lib/sliver/runner.rb, line 2
def initialize(klass, environment)
  @klass, @environment = klass, environment

  @guarded = false
end

Public Instance Methods

call() click to toggle source
# File lib/sliver/runner.rb, line 8
def call
  pass_guards
  action.call unless skip_action?
  post_process

  response.to_a
end

Private Instance Methods

action() click to toggle source
# File lib/sliver/runner.rb, line 20
def action
  @action ||= klass.new environment, response
end
guard_classes() click to toggle source
# File lib/sliver/runner.rb, line 24
def guard_classes
  klass.guards
end
guarded!() click to toggle source
# File lib/sliver/runner.rb, line 32
def guarded!
  @guarded = true
end
guarded?() click to toggle source
# File lib/sliver/runner.rb, line 28
def guarded?
  @guarded
end
pass_guards() click to toggle source
# File lib/sliver/runner.rb, line 36
def pass_guards
  guard_classes.each do |guard_class|
    guard = guard_class.new action, response
    next if guard.continue?

    guard.respond
    guarded!
    break
  end
end
post_process() click to toggle source
# File lib/sliver/runner.rb, line 47
def post_process
  klass.processors.each { |processor| processor.call action, response }
end
response() click to toggle source
# File lib/sliver/runner.rb, line 51
def response
  @response ||= Sliver::Response.new
end
skip_action?() click to toggle source
# File lib/sliver/runner.rb, line 55
def skip_action?
  guarded? || action.skip?
end