2012-09-19 62 views
2

如何在不使用mapRack::UrlMap的情況下安裝/運行多個機架應用程序?使用這些將調度應用程序很好,但也將前綴用於調度的匹配開始的路線,所以:安裝多個Rack應用程序,但不向URL添加前綴

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,但我從未使用過,也不知道它是否是對這個問題的一個很好的答案。

回答

3

答案是確實機架級聯:::

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