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