【发布时间】:2014-05-25 08:31:32
【问题描述】:
我正在开发一个 gem,它也是 Rails::Engine
我希望引擎将自定义中间件添加到主机应用程序中,我已使用以下代码完成此操作
module MyModule
class Engine < ::Rails::Engine
isolate_namespace MyModule
initializer "my_gem.middleware" do |app|
app.config.app_middleware.use "MyModule::MyMiddleware"
end
end
end
但是,这也会将中间件添加到引擎的 routes.rb 文件中定义的那些路由中。我怎样才能避免这种情况?我只希望将中间件添加到主机应用程序中。
例如,考虑在宿主应用程序中定义的以下路由
Rails.application.routes.draw do
mount MyModule::Engine => "/engine"
root :to => Proc.new { |env| [200, {'Content-Type' => 'text/html'}, ["Hello World"]] }
end
/engine 下的所有内容都不应通过MyMiddleware
我可能走错了路来实现这一点,也许我应该看看其他解决方案?
【问题讨论】:
标签: ruby-on-rails ruby rack middleware rails-engines