class Dynflow::Middleware::World
Public Class Methods
new()
click to toggle source
# File lib/dynflow/middleware/world.rb, line 6 def initialize @register = Middleware::Register.new clear_cache! end
Public Instance Methods
clear_cache!()
click to toggle source
# File lib/dynflow/middleware/world.rb, line 33 def clear_cache! @middleware_classes_cache = {} end
execute(method, action_or_class, *args, &block)
click to toggle source
# File lib/dynflow/middleware/world.rb, line 16 def execute(method, action_or_class, *args, &block) Match! method, :delay, :plan, :run, :finalize, :plan_phase, :finalize_phase, :present if Child? action_or_class, Dynflow::Action action = nil action_class = action_or_class elsif Type? action_or_class, Dynflow::Action action = action_or_class action_class = action.class else Algebrick::TypeCheck.error action_or_class, 'is not instance or child class', Dynflow::Action end classes = middleware_classes(action_class) stack = Middleware::Stack.build(classes, method, action, &block) stack.call(*args) end
use(*args)
click to toggle source
# File lib/dynflow/middleware/world.rb, line 11 def use(*args) clear_cache! @register.use(*args) end
Private Instance Methods
cumulate_register(action_class, register = Middleware::Register.new)
click to toggle source
# File lib/dynflow/middleware/world.rb, line 39 def cumulate_register(action_class, register = Middleware::Register.new) register.merge!(@register) unless action_class == Dynflow::Action cumulate_register(action_class.superclass, register) end register.merge!(action_class.middleware) return register end
middleware_classes(action_class)
click to toggle source
# File lib/dynflow/middleware/world.rb, line 48 def middleware_classes(action_class) unless @middleware_classes_cache.key?(action_class) register = cumulate_register(action_class) resolver = Dynflow::Middleware::Resolver.new(register) @middleware_classes_cache[action_class] = resolver.result end return @middleware_classes_cache[action_class] end