class Spank::Component
Public Class Methods
new(class_key, &block)
click to toggle source
# File lib/spank/component.rb, line 5 def initialize(class_key, &block) @factory_method = block @interceptors = [] end
Public Instance Methods
as_singleton()
click to toggle source
# File lib/spank/component.rb, line 18 def as_singleton @factory_method = memoize(@factory_method) end
create(container)
click to toggle source
# File lib/spank/component.rb, line 10 def create(container) instance = @factory_method.call(container) @interceptors.each do |interceptor| instance = interceptor.intercept(instance) end instance end
intercept(method)
click to toggle source
# File lib/spank/component.rb, line 22 def intercept(method) interceptor = InterceptorRegistration.new(method) @interceptors.push(interceptor) interceptor end