多くのことは、これを達成しようとしている理由によって異なります。私たちは現在、同じRailsアプリケーションのいくつかの異なるドメインとサブドメインに4つの異なる「アプリケーション」を提供しています。私たちは、私たちの製品のさまざまな機能を見たい異なるクライアントを持っているため、これを行います。例えば、すべての製品は、顧客、契約、商店、そして他の多くのモデルのアイデアを共有していますが、異なるブランドのサイト、タブ、メニューアイテムを異なる名前にして、サイトの一部に特定の人々がアクセスできないようにしたい。
あなたはCSSと画像をあなたの主な関心事として概説しました。私はそれらに固執しますが、他の問題やリソースの中でレイアウト、承認、JavaScriptを修正するためのアイディアも必要でした。
わかりやすくするために、私たちのケースでは別の製品であることを私は皮膚と呼んでいます。
私たちのアプリには、着信ドメインに基づいていくつかの環境変数を設定するプラグインがあります。これらの変数に基づいて、私たちのRailsアプリケーションは、必要に応じて異なるレイアウトと部分的なソースを提供します。これらのレイアウトは、デザイナーやフロントエンドの開発者にとって意味のある場所に格納されている適切なJSとイメージを参照します。たとえば、customer.jsは通常の顧客操作を格納し、次にサブディレクトリにはスキン用のcustomer.jsがあり、メインのcustomer.jsファイルを拡張します(Dojoを使用してこれを行います)。
セキュリティが懸念される他の分野では、ドメイン宝石によって設定された環境変数に基づいて必要なことを行うライブラリがあります。
また、動的なブランディングを提供する必要があります。これらのビューとレイアウトには、イメージがどこから来るべきかを決定するロジックを持つヘルパーがあります。
私たちはSASSを使用していますので、色と画像にミックスインを使用することができます。これは、色とイメージの変数を使用するレイアウト情報を持つルートSASSファイルを持つことで行います。次に、必要に応じて、これらのカラーファイルとイメージファイルをルートSASSに要求します。
これらの2つのスキンをどのように判断するかについての情報を提供すれば、答えが良いかもしれません。あなたがアクセスしようとしているサイトを特定するのに役立つドメインプラグインはすでにあります。適切なCSS、画像、JSなどをレンダリングするためにアプリケーションを整理する方法については、私が概説したものが少し役に立ちます。