class Routemaster::Middleware::Dirty

If an event payload was place in the environment (‘env`) 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`).

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/routemaster/middleware/dirty.rb, line 14
def initialize(app, options = {})
  @app = app
  @map = options.fetch(:dirty_map) { Routemaster::Dirty::Map.new }
end

Public Instance Methods

call(env) click to toggle source
# File lib/routemaster/middleware/dirty.rb, line 19
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