Sha256: fc72a638c883603f78044e40a79012a89e5bc6c55b79540902507e3fda003c3b

Contents?: true

Size: 772 Bytes

Versions: 1

Compression:

Stored size: 772 Bytes

Contents

# All middleware must respond_to?("setup")
# To register middleware, after the class call ATD::Middleware.register(Your::Middleware)
module ATD
  module Middleware
    @middleware = {}
    @sources = []

    def self.register(source)
      @sources.push source
    end

    def self.run(target = nil)
      return nil if @middleware[target.class].nil?
      @middleware[target.class].each do |action|
        action.call(target)
      end
    end

    def self.create(source, target)
      @middleware[target] = [] if @middleware[target].nil?
      @middleware[target].push(source)
    end

    def self.setup(target)
      # At some point, target should be used so that middleware are only setup on one target.
      @sources.each(&:setup)
      target
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
atd-0.0.0.TEST.GITLAB1 lib/atd/middleware.rb