2

如何在不使用mapor的情况下安装/运行多个机架应用程序Rack::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

use如果应用程序本身也在use其中使用过,则会导致问题。这样做:

run API.app
run Web.app

只会提供来自最后一个运行的应用程序的路线。

我即将尝试 Rack::Cascade 但我以前从未使用过它,也不知道它是否是解决这个问题的好方法。

4

1 回答 1

3

答案确实是 Rack::Cascade:

run Rack::Cascade.new( [API, Web] )
于 2012-09-19T22:57:30.417 回答