Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 5:routes.rb中安装的Rack应用程序是否绕过Rails中间件?_Ruby On Rails_Sinatra_Rack - Fatal编程技术网

Ruby on rails Rails 5:routes.rb中安装的Rack应用程序是否绕过Rails中间件?

Ruby on rails Rails 5:routes.rb中安装的Rack应用程序是否绕过Rails中间件?,ruby-on-rails,sinatra,rack,Ruby On Rails,Sinatra,Rack,我的routes.rb中安装了一些机架式应用程序,如下所示: mount ImageVise, at: '/ivise' mount ShaderApiV0, at: '/api/v0' 我目前正在从意大利面定制机架堆栈迁移到Rails,因此保留这些应用程序对我来说是有意义的。我注意到,应用程序上定义的整个Rails中间件堆栈(包括我的Rack::Cache设置)在我调用控制器时起作用,但在我调用由这些迷你应用程序控制的URL时不起作用。不过,我几乎可以肯定Rails 4中的操作是有效的 例如

我的
routes.rb中安装了一些机架式应用程序,如下所示:

mount ImageVise, at: '/ivise'
mount ShaderApiV0, at: '/api/v0'
我目前正在从意大利面定制机架堆栈迁移到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
class Mittel

当我请求一个由Rails控制器驱动的URL时,我确实看到了
X-Kustom
响应头,但当我请求一个由安装的迷你应用程序控制的URL时,我没有看到它。因此,条件GET和类似的东西不起作用等等。除了在
config.rb中复制Rails中间件堆栈的三分之一并将这些应用装载到那里之外,我如何使它起作用?

找到了它。原来我也在
config.ru
的同一个URL下安装了这些应用程序中的一个,然后整个Rails堆栈被绕过,这是应该的。吸取的教训