Sha256: 37d0f219312f4f007279c0137a1c3170ed0a251068b41d9b18f25cc9f98bae60

Contents?: true

Size: 839 Bytes

Versions: 3

Compression:

Stored size: 839 Bytes

Contents

# 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

        base.extend(ClassMethods)
        base.include(InstanceMethods)
        base.include(Wayfarer::Callbacks)
      end

      module ClassMethods
        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

          task.metadata.job ||= self
          task.metadata.controller = self

          self.class.chain.call(task) do
            yield if block_given?
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
wayfarer-0.4.6 lib/wayfarer/middleware/controller.rb
wayfarer-0.4.5 lib/wayfarer/middleware/controller.rb
wayfarer-0.4.4 lib/wayfarer/middleware/controller.rb