class Catalyst::Runner
Attributes
actions[R]
history[R]
Public Class Methods
new(actions)
click to toggle source
# File lib/catalyst/runner.rb, line 5 def initialize(actions) @history = [] @actions = actions.map {|act| setup_action(act) } end
Public Instance Methods
call(env={})
click to toggle source
# File lib/catalyst/runner.rb, line 10 def call(env={}) return if actions.empty? begin action = history.unshift(@actions.shift).first action.call(env) rescue Exception => e env["catalyst.error"] = e raise end end
setup_action(action)
click to toggle source
# File lib/catalyst/runner.rb, line 22 def setup_action(action) klass, args, block = action if klass.is_a?(Class) klass.new(*[self, args].flatten.compact, &block) elsif klass.respond_to?(:call) lambda do |env| klass.call(*[env, self].flatten.compact) end else raise end end