1

複数の仮想ホストを介して 1 つの Rails アプリケーションにアクセスしたいと考えています。仮想ホストが異なれば、データベース、画像、スタイルシート、場合によってはビューのレイアウトも異なります。異なる仮想ホストを介してアクセスされる 1 つの Rails コードで複数のアプリケーションを提供することを実現するために、何をお勧めしますか?

編集済み

私が想像するより良いものを指定するために、これらを追加します。

  • ホスト名に基づいて、どの db/styles/images/layouts を使用する必要があるかを区別するためにレールを好みます。
  • 異なる Rails アプリケーションが実行されている可能性がありますが、同じコードの上にあります。
  • アプリケーションの開始中に DB 接続が確立される場合があります。

Railsアプリがホストを認識すべきレイヤーはどれですか? ミドルウェア、ブート スクリプト、またはその他の場所に配置する必要がありますか?

4

2 に答える 2

1

データベースの場合:

次のような特別なパラメーターをルートに設定できます。

/:クライアント/:コントローラー/:アクション

次に、params[:client] を使用して、ApplicationController before_filter から ActiveRecord::Base. Establish_connection(...) を手動で調整します (私はこれを実行しましたが、動作します)。

ここでサンプルコードを参照してください: ruby​​-forum

スタイルシートの場合、イメージ...: nginx の仮想ホストで apache を使用して、パブリック/イメージなどを分岐し (レールなしで直接サービスを提供するために行う必要があるため)、それらを選択する場所を選択します。(これには mod_rewrite と同等のものが必要な場合があります)

レイアウトはもう少しトリッキーかもしれませんが、params[:client] に応じてパーシャルを賢くロードする共通の erb を用意することをお勧めします。

お役に立てば幸いです。

于 2010-01-13T13:48:35.173 に答える
0

私はレールを知りませんが、Django でそれを行う方法は知っています。コアロジックがそれほど異なるとは思えません。

サーバーに受け入れるホスト (必要に応じてワイルドカードを含む) を伝えてから、Web アプリケーションに要求ドメイン (Web サーバーから渡される) を調べるように指示します。

そこからどう変化していくかはあなた次第です。

于 2010-01-13T12:25:02.533 に答える