2012-02-07 16 views
6

これは非常に簡単な質問です。複数のホストを同時に処理できるYesodアプリケーションを実行するにはどうすればよいですか?ホスト名に依存しないYesodアプリケーション

デフォルトのYesodセットアップでは、任意のホストからの着信接続を処理できますが、すべてのURLはapprootの先頭に表示されます。 Yesodインスタンス宣言のjoinPathをオーバーライドすることは、現在のドメインを格納してその関数が利用できるようにする方法があれば可能ですが、そうではありません。

this wiki pageに記載されている方法はうまく機能しますが、経路にはdomainというパラメータを追加する必要があります(これには、一致するドメインの静的なセットがないため)。実際には(私は多くのルートを持っているため、その中にはドメインに依存しないものがあります)、ルートをそのまま残しておくという方が良いでしょう.WAIリクエスト情報からホスト名を取得することは可能ですハンドラ関数

絶対URL(例:メール、RSS、XML API)を必要とするものを使用するので、approot _ = ""はオプションではありません。

私は、コンパイル時にサポートが必要なホスト名をすべて知っているわけではありません。

したがって、approot変数ではなく、着信要求のホスト名を使用するようにURLをレンダリングするにはどうすればよいですか。

答えて

3

基本的なタイプに実際のドメイン名を含める方法と、要求に応じて適切なアプリケーションにファームウェアを適用し、必要に応じて新しいものを作成するミドルウェアを使用する方法があります。しかし、これは重すぎると感じています。

一般的なケースに合っているのでそのまま残したいと思いますが、おそらくRequestという値が与えられる余分なメソッドapprootRequestを追加することもできます。この議論をリストに移したいと思います。

更新:変更は、すでにGitリポジトリに上陸:https://github.com/yesodweb/yesod/commit/4dd9880389e3b61f976e44525ae97831ec578a17

+0

私は議論を、次のされ、その溶液は、レポになったら(他のユーザーのために)この回答への更新をお願い申し上げます。ありがとう! – dflemstr

関連する問題