lib/wayfarer/middleware/controller.rb in wayfarer-0.4.6 vs lib/wayfarer/middleware/controller.rb in wayfarer-0.4.7

- old
+ new

@@ -1,40 +1,44 @@ # frozen_string_literal: true module Wayfarer module Middleware module Controller - def self.included(base) - base.cattr_accessor :chain, default: Chain.empty - base.attr_accessor :task + extend ActiveSupport::Concern - base.extend(ClassMethods) - base.include(InstanceMethods) - base.include(Wayfarer::Callbacks) + included do + class_attribute :chain, + default: Chain.empty, + instance_accessor: false, + instance_predicate: false + + attr_accessor :task + + include Wayfarer::Callbacks end - module ClassMethods + class_methods do def use(middleware) chain.push(middleware.lazy) api(middleware) end def api(middleware) include middleware.api end end - module InstanceMethods - def call(task) - self.task = task + def call(task) + self.task = task - task.metadata.job ||= self - task.metadata.controller = self + task[:job] ||= self + task[:controller] = self - self.class.chain.call(task) do - yield if block_given? - end + self.class.chain.call(task) do + yield if block_given? end + + task[:return_value] end end end end