【问题标题】:Mount multiple Rack apps without adding a prefix to the url挂载多个 Rack 应用程序而不在 url 中添加前缀
【发布时间】:2012-09-19 14:18:03
【问题描述】:

如何在不使用mapRack::UrlMap 的情况下安装/运行多个机架应用程序?使用这些将很好地调度应用程序,但也会将用于调度的路由添加到匹配器的开头,所以:

class API < Sinatra::Base
  get "/api" do
    # blah
  end
end

map( "/api" ) { run API }

上面的路由是在“/api/api”访问的,这不是我想要的,只是“/api”是我想要的。如果有更好的方法,我不想用过滤器挖掘请求对象并删除前缀。

我试过了:

use API.app  # the app is wrapped in a `def self.app` for convenience.
run Web.app

但如果应用程序本身也在其中使用了useuse 会导致问题。这样做:

run API.app
run Web.app

将仅提供来自最后一个运行的应用程序的路由。

我即将尝试 Rack::Cascade,但我之前从未使用过它,不知道它是否能很好地解决这个问题。

【问题讨论】:

    标签: ruby sinatra rack


    【解决方案1】:

    答案确实是 Rack::Cascade:

    run Rack::Cascade.new( [API, Web] )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 2014-09-29
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      相关资源
      最近更新 更多