ruby-on-rails – 在Rails应用程序中构建2个中间件堆栈
发布时间:2020-12-16 19:32:18 所属栏目:百科 来源:网络整理
导读:我有一个Rails应用程序提供网站和API. 我不希望API的中间件堆栈中出现一些元素,例如:ActionDispatch :: Cookies,ActionDispatch :: Session :: CookieStore或ActionDispatch :: Flash. 网站的中间件堆栈保持正常. 那我该怎么办呢?谢谢. 解决方法 我有完全
我有一个Rails应用程序提供网站和API.
我不希望API的中间件堆栈中出现一些元素,例如:ActionDispatch :: Cookies,ActionDispatch :: Session :: CookieStore或ActionDispatch :: Flash. 网站的中间件堆栈保持正常. 那我该怎么办呢?谢谢. 解决方法
我有完全相同的情况,并希望做同样的事情.到目前为止,我已经能够使用Rails引擎添加缺少的中间件而没有问题的某些路由(虽然它不一定在堆栈中的“正确顺序”,但到目前为止似乎工作正常):
application.rb中: # after Bundler.require(...) require_relative '../lib/engines/website/lib/website' LIB /发动机/网站/ lib中/ website.rb: require_relative "website/engine" module Website; end LIB /发动机/网站/ lib目录/网站/ engine.rb: module Website class Engine < ::Rails::Engine middleware.use ActionDispatch::Cookies middleware.use ActionDispatch::Session::CookieStore middleware.use ActionDispatch::Flash end end 配置/ routes.rb文件: mount Website::Engine => "/website" (或者你可以安装在“/”,但是define your other routes first in that case) 该网站的所有内容都在引擎目录下的典型目录结构中: lib engines website app assets ... controllers ... views ... config routes.rb lib website website.rb 我还没有走得太远,但到目前为止,这对我有用. 注意:从技术上讲,引擎文件甚至不必是网站目录中的单独文件.您可以将它推入website.rb并使其成为一个文件 – 如果没有其他任何特别复杂的东西添加到您的lib目录.我发现的唯一要求是文件必须位于引擎自己的命名目录中的lib目录中(理论上包含config / routes.rb和引擎的其余文件结构),因为当Rails :: Engine时由应用程序急切加载,引擎查找其lib目录以找到相邻的app,config,vendor,etc.到eager-load. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |