2010-11-19 2 views
1

1つのRailsアプリの複数の、わずかに異なるインカネーションを整理する最良の方法は何ですか?1つのRailsアプリの複数の化身

インカネーションは、CSS、画像、データベース、ドメインによって異なります。そうでなければ、アプリケーション/ロジックはまったく同じです。いくつかのルートのパブリック・フェース・パス名は変更する必要がありますが、同じルート構造は変わりません。

私はアプリを1つインストールし、環境内でこれらの変更を管理することを考えています。

DBは明らかに既にこれに対してうまく設定されています。私が想像しているCSSや画像のパスは、環境を認識するのに十分なほど簡単です。ルートはあまりにも難しくはありません。いずれにせよ、理論的にはそうです。

私はこの問題を解決しなければならないと確信しているので、私はこの投稿を書いています。既存の "スキン"宝石やこれに使用できるものはありますか?さもなければ、私の計画されたアプローチに関するコメントは非常に高く評価されるでしょう!私はRails 3を使用しています。

答えて

1

リビジョン管理システムで別々のブランチを管理するだけではどうですか?

1

多くのことは、これを達成しようとしている理由によって異なります。私たちは現在、同じRailsアプリケーションのいくつかの異なるドメインとサブドメインに4つの異なる「アプリケーション」を提供しています。私たちは、私たちの製品のさまざまな機能を見たい異なるクライアントを持っているため、これを行います。例えば、すべての製品は、顧客、契約、商店、そして他の多くのモデルのアイデアを共有していますが、異なるブランドのサイト、タブ、メニューアイテムを異なる名前にして、サイトの一部に特定の人々がアクセスできないようにしたい。

あなたはCSSと画像をあなたの主な関心事として概説しました。私はそれらに固執しますが、他の問題やリソースの中でレイアウト、承認、JavaScriptを修正するためのアイディアも必要でした。

わかりやすくするために、私たちのケースでは別の製品であることを私は皮膚と呼んでいます。

私たちのアプリには、着信ドメインに基づいていくつかの環境変数を設定するプラグインがあります。これらの変数に基づいて、私たちのRailsアプリケーションは、必要に応じて異なるレイアウトと部分的なソースを提供します。これらのレイアウトは、デザイナーやフロントエンドの開発者にとって意味のある場所に格納されている適切なJSとイメージを参照します。たとえば、customer.jsは通常の顧客操作を格納し、次にサブディレクトリにはスキン用のcustomer.jsがあり、メインのcustomer.jsファイルを拡張します(Dojoを使用してこれを行います)。

セキュリティが懸念される他の分野では、ドメイン宝石によって設定された環境変数に基づいて必要なことを行うライブラリがあります。

また、動的なブランディングを提供する必要があります。これらのビューとレイアウトには、イメージがどこから来るべきかを決定するロジックを持つヘルパーがあります。

私たちはSASSを使用していますので、色と画像にミックスインを使用することができます。これは、色とイメージの変数を使用するレイアウト情報を持つルートSASSファイルを持つことで行います。次に、必要に応じて、これらのカラーファイルとイメージファイルをルートSASSに要求します。

これらの2つのスキンをどのように判断するかについての情報を提供すれば、答えが良いかもしれません。あなたがアクセスしようとしているサイトを特定するのに役立つドメインプラグインはすでにあります。適切なCSS、画像、JSなどをレンダリングするためにアプリケーションを整理する方法については、私が概説したものが少し役に立ちます。

関連する問題