我有以下情况:
class BaseApp < Sinatra::Base
use Custom::Middleware
end
class MyApp < BaseApp
end
有没有办法在MyApp上卸载Custom :: Middleware?我搜索了一种与使用相反但没有找到任何内容的方法。我知道不希望从BaseApp继承,但这个应用程序有一个常规的代码库,我需要BaseApp的一堆功能。
答案 0 :(得分:0)
我没有在Sinatra或机架(构建器)中看到任何可以卸载中间件的东西。 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