lib/rage-rb.rb in rage-rb-0.6.0 vs lib/rage-rb.rb in rage-rb-0.7.0

- old
+ new

@@ -43,9 +43,27 @@ @logger ||= config.logger end def self.load_middlewares(rack_builder) config.middleware.middlewares.each do |middleware, args, block| + # in Rails compatibility mode we first check if the middleware is a part of the Rails middleware stack; + # if it is - it is expected to be built using `ActionDispatch::MiddlewareStack::Middleware#build`, but Rack + # expects the middleware to respond to `#new`, so we wrap the middleware into a helper module + if Rage.config.internal.rails_mode + rails_middleware = Rails.application.config.middleware.middlewares.find { |m| m.name == middleware.name } + if rails_middleware + wrapper = Module.new do + extend self + attr_accessor :middleware + def new(app, *, &) + middleware.build(app) + end + end + wrapper.middleware = rails_middleware + middleware = wrapper + end + end + rack_builder.use(middleware, *args, &block) end end def self.code_loader