2011-10-31 7 views
1

Rails 2.3.x、bundler、nginx、passengerおよびgitを使用するWebサイトがあり、同じコードを使用して非常に似たサイトを展開したいと考えています。両者の違いが含まれます:複数のRails 2.3 Webサイトで同じコードベースを使用して差分を管理する方法

  • ロケール
  • データベースいくつかのケースでは
  • 検証いくつかの例

これらの違いを管理するための最良の方法は何で

  • ビュー使用している間同じコードベース?私たちが持っていた

    いくつかのアイデア:

    • など生産生産-Bなどの新しいRailsの環境を、作成し、適切な環境ファイルの違いを扱います。 1つの潜在的な問題は、の生産またはの開発の環境を探すために、多くの宝石とプラグインがハードコードされていることです。

    • グローバル変数を設定するか、要求ごとにドメインを使用して、使用するコンテキストを決定するためにPassengerを使用します。この問題は、この状態にアクセスできないレーキタスクやcronジョブなどです。

    • configディレクトリの2つのバージョンを維持します。これは、すべての設定ファイルの2つのバージョンを維持することは不便であり、その多くは同一である。また、私はgitを利用してこれを正しく行う方法を今確信しています。

    アイデア、ヒント、または例をお待ちしております。 Question #6753275は関連していますが、不完全なようです。

  • 答えて

    2

    私がレール2.3.xプロジェクトで使用したソリューションの1つは、サイト全体をengineに変換することでした。それは実際にはかなり簡単です、vendor\plugins\の下にフォルダを作成し、そこにすべてのappものを移動します。レール2.3 hereの説明を見ることができます。

    必要に応じて、すべての移行とそのものも移動することもでき、レーキタスク を使用してそれらを実行することもできます。

    却下する必要があるものはすべて、エンジンを使用して実際のレールプロジェクトに配置することができます。つまり、自分の設定、ロケール、いくつかのローカルなルール、そして大きな共有のプラグイン/エンジンという2つのレイルがあります。

    git submodulesを使用して、異なるプロジェクト間でコードを同期させました。

    エンジンが今や宝石になることができるので、レール3ではこれがさらに簡単です。

    これが役に立ちます。

    +0

    ありがとう、それは役に立ちます。 rake + rsyncを使ってエンジン/パブリックのファイルを一般にコピーしましたか?私たちはBundlerを使用しています - Gemfileはどこに行きますか?さまざまなサイトで多くのことが重複してしまうように思える。 – acw

    +0

    さて、プラグインとしてのエンジン(rails 2.3.x)では、あなたのrailsプロジェクトにafem:Gemfileが1つしかありません。しかし、それはちょうど推測です。私はバンドラがある前にこれをしました。宝石(レール3.x)を使用している場合、各宝石には独自のGemfileがあります。私はファイルを手動でコピーしました。いくつかの重複がありますが、それはまた重要なところで物事を覆すための自由を与えます。そして最も重要なのは、主な複製を取り除くことです!コードはアプリケーション間で共有されます。 – nathanvda

    関連する問題