Sha256: af77533e4f464226f5c4103bc33a20c002155ff42be91ea29e5e5c4e14c9efca
Contents?: true
Size: 873 Bytes
Versions: 17
Compression:
Stored size: 873 Bytes
Contents
require 'routemaster/dirty/map' module Routemaster module Middleware # If an event payload was place in the environment # (`env['routemaster.payload']`) by a previous middleware, # mark each corresponding entity as dirty. # # All events are passed through. # # The dirty map is passed as `:map` to the constructor and must respond to # `#mark` (like `Routemaster::Dirty::Map`). class Dirty def initialize(app, dirty_map: nil, **_) @app = app @map = dirty_map || Routemaster::Dirty::Map.new end def call(env) env['routemaster.dirty'] = dirty = [] env.fetch('routemaster.payload', []).each do |event| next if event['type'] == 'noop' next unless @map.mark(event['url']) dirty << event['url'] end @app.call(env) end end end end
Version data entries
17 entries across 17 versions & 1 rubygems