如何在不使用map
or的情况下安装/运行多个机架应用程序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 但我以前从未使用过它,也不知道它是否是解决这个问题的好方法。