またはを使用せずに複数のラック アプリをマウント/実行するにはどうすればよいです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 を試してみようとしていますが、これまで使用したことがなく、この問題に対する適切な回答かどうかわかりません。