【发布时间】:2012-09-19 14:18:03
【问题描述】:
如何在不使用map 或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,但我之前从未使用过它,不知道它是否能很好地解决这个问题。
【问题讨论】: