diff --git a/lib/rack/flash.rb b/lib/rack/flash.rb index b9b99fd..ea973cb 100644 --- a/lib/rack/flash.rb +++ b/lib/rack/flash.rb @@ -1,27 +1,34 @@ module Rack class Builder - attr :ins def use(middleware, *args, &block) + # Begin monkey patch middleware.instance_variable_set "@rack_builder", self def middleware.rack_builder @rack_builder end - @ins << lambda { |app| - middleware.new(app, *args, &block) - } + # End monkey patch + + if @map + mapping, @map = @map, nil + @use << proc { |app| generate_map app, mapping } + end + @use << proc { |app| middleware.new(app, *args, &block) } end def run(app) + # Begin monkey patch klass = app.class klass.instance_variable_set "@rack_builder", self def klass.rack_builder @rack_builder end - @ins << app #lambda { |nothing| app } + # End monkey patch + + @run = app end def leaf_app - ins.last + @run end end end