gpt4 book ai didi

ruby - Sinatra:指定使用多个应用程序时搜索路线的顺序?

转载 作者:数据小太阳 更新时间:2023-10-29 08:39:15 24 4
gpt4 key购买 nike

我有一个经典风格的 Sinatra 应用程序,我正在使用 use MyModularApp 向它添加一个模块化应用程序。

这工作正常,当我运行经典应用程序时,来自经典应用程序和模块化应用程序的路由都可用。问题是,似乎首先搜索来自模块化应用程序的路由,然后才搜索来自经典应用程序的应用程序。我想要相反的行为。我怎样才能实现它?

最佳答案

Sinatra 应用程序可以是used as Rack middleware以及自己的应用程序。使用 use MyModularApp 你是 adding the module into the middleware stack ,所以它会在主应用程序之前看到请求;无论您在源文件中使用 use 方法,都会发生这种情况。

当充当中间件时,如果当前应用中没有匹配的路由,Sinatra 应用会将请求转发到堆栈中,这就是您看到当前行为的原因。

让它按照您的意愿工作的一种方法是设置一个调用您的模块化应用程序的自定义 not_found 处理程序:

not_found do
MyModularApp.call(env)
end

现在,如果您的主应用没有匹配请求的路由,将调用模块化应用。

关于ruby - Sinatra:指定使用多个应用程序时搜索路线的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14887385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com