删除Sinatra中的继承中间件

时间:2013-07-31 23:53:47

标签: ruby sinatra

我有以下情况:

class BaseApp < Sinatra::Base
  use Custom::Middleware
end

class MyApp < BaseApp
end

有没有办法在MyApp上卸载Custom :: Middleware?我搜索了一种与使用相反但没有找到任何内容的方法。我知道不希望从BaseApp继承,但这个应用程序有一个常规的代码库,我需要BaseApp的一堆功能。

1 个答案:

答案 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