我有以下情况:
class BaseApp < Sinatra::Base
use Custom::Middleware
end
class MyApp < BaseApp
end
有没有办法在 MyApp 上卸载 Custom::Middleware?我已经搜索了一种与使用相反的方法,但没有找到任何东西。我知道最好不要从 BaseApp 继承,但是这个应用程序有一个常规的代码库,我需要 BaseApp 的一堆功能。
我在 Sinatra 或 rack (builder) 中看不到任何可以让您卸载中间件的东西。Sinatra 将中间件作为数组存储在 @middleware 实例变量中。
您可以尝试在 config.ru 中加载自定义中间件:
map("/myapp") { run MyApp }
map("/baseapp") do
BaseApp.use Custom::Middleware
run BaseApp
end
如果这不起作用,则从 BaseApp 中删除中间件,并创建另一个继承自 BaseApp 的类,在那里定义自定义中间件,然后 MyApp 将没有该中间件集。
class BaseApp < Sinatra::Base
end
class SomeApp < BaseApp
use Custom::Middleware
end
class MyApp < BaseApp
end