【发布时间】:2016-10-29 22:19:21
【问题描述】:
我的routes.rb 中安装了一些 Rack 应用程序,如下所示:
mount ImageVise, at: '/ivise'
mount ShaderApiV0, at: '/api/v0'
我目前正在从意大利面条式自定义 Rack 堆栈迁移到 Rails,因此保留这些应用程序对我来说很有意义。我注意到在应用程序上定义的整个 Rails 中间件堆栈(包括我的 Rack::Cache 设置)在我调用控制器时确实起作用,但是当我调用由这些控制器控制的 URL 时 不起作用迷你应用程序。我几乎可以肯定在 Rails 4 中它确实有效。
例如,如果我像这样引入自定义中间件:
class Mittel < Struct.new(:app)
def call(env)
a, b, c = app.call(env)
b['X-Kustom'] = 'olala'
[a,b,c]
end
end
config.middleware.insert_before Rack::Head, Mittel
当我请求一个由 Rails 控制器驱动的 URL 时,我确实看到了 X-Kustom 响应标头,但是当我请求一个由挂载的 mini 控制的 URL 时,我确实没有得到它-应用。因此,有条件的 GET 和类似的东西不起作用等等。除了在 config.rb 中复制三分之一的 Rails 中间件堆栈并将这些应用程序挂载到那里之外,我怎样才能使它工作?
【问题讨论】:
标签: ruby-on-rails sinatra rack