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