ruby-on-rails – Rails Engine仅向主机应用添加中间件
发布时间:2020-12-17 02:22:25 所属栏目:百科 来源:网络整理
导读:我正在开发一个也是Rails :: Engine的gem 我希望引擎将自定义中间件添加到主机应用程序中,并使用以下代码完成此操作 module MyModule class Engine ::Rails::Engine isolate_namespace MyModule initializer "my_gem.middleware" do |app| app.config.app_mi
我正在开发一个也是Rails :: Engine的gem
我希望引擎将自定义中间件添加到主机应用程序中,并使用以下代码完成此操作 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 但是,这也会将中间件添加到Engine的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 我可能会走错路来实现这个目标,也许我应该看看其他一些解决方案? 解决方法
如果不把它放在引擎中我怎么能看到你怎么做.初始化程序在引导时运行.您可以在中间件中创建一个URL匹配器,以便在URL为/ engine时跳过它所做的任何操作.请注意,我必须使用app.config.middleware.use,而不是app.config.app_middleware.use
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |