2017-11-24 3 views
0

私のアプリケーションでは、複数のデータベース(開発用、テスト用、生産用)への複数の接続を設定する必要があります。私はスタックオーバーフローでいくつかのヒントを見つけました、URLで取得し、多くの異なる設定を渡すので、私はそれを私のアプリで改善しましたが、私はそれがURLを持っていないので、動作しない移行を実行しようとすると合格するには、別の方法がありますか?それとも、今日とは異なるアプリモードを管理するつもりですか?これは、生産またはテストの場合はデバッグを偽と定義し、開発の場合は真とすることもできます。データベース管理Cakephp

+0

同じWeblocationからデータベースを切り替える必要はありますか?私は通常自分のマシンで開発するので、自分のサーバーでテスト版をセットアップし、最終的には顧客のサーバーで生産します。 3つの異なる場所です。 – JvO

+0

はい、これは私の場合ですが、私は、私のアプリケーションを実行する場所ごとに異なる設定をする必要のない変数やメソッドを設定したいので、私のブランチ間の設定や競合が少なくて済みます。 –

+0

環境変数を使用することを検討しましたか(サーバーのホスト構成から) –

答えて

1

私は私のpath.phpのようにしました。私はapp_MODE変数を '開発'として定義していました。私のapp.phpでこのデータベースを開発するとcaseオプションを作成しました。この変数データベースとこれは別のものです。これは、各APP_MODEごとに1つずつブランチを作成するのに役立ちます。テストやプロダクションに送信する必要があるときに、マージを行い、ジェンキンスに送信します。

1

開発用コンピュータのホスト名を確認します。

LinuxまたはWindows:

hostname 

ではなく、単語 defaultのホスト名を使用して app/config/app.default.phpへのファイルのコピーを作成します。

次のように編集しapp/Console/Installer.phpファイルがcreateAppConfig機能を変更することができます。

public static function createAppConfig($dir, $io) 
{ 
    $appConfig = $dir . '/config/app.php'; 
    $defaultConfigPath = $dir . '/config/app.default.php'; 
    $hostnameConfigPath = $dir . '/config/app.' . gethostname() . '.php'; 
    $defaultConfig = file_exists($hostnameConfigPath) ? $hostnameConfigPath : $defaultConfigPath; 
    if (!file_exists($appConfig)) { 
     copy($defaultConfig, $appConfig); 
     $io->write('Created `config/app.php` file'); 
    } 
} 

あなたのプロジェクトにcomposer installを実行すると、それはapp.default.php設定、または現在のマシンのホスト名と一致する別の構成のいずれかを使用します。

これは、すべての構成設定を環境またはデフォルトに結合します。それはあなたの問題のいくつかを解決するかもしれませんが、開発ワークステーション上のデータベースを切り替える必要がある場合です。自分でapp.phpファイルを手動で編集するほうが簡単です。もしあなたがそれより複雑な何かをしなければならないなら。

+0

悪くない。別の設定ファイルを使用して、Webルートの1つ上に置き、index.phpからインクルードする()。ウェブルートの外側に配置することは、a)リモートからアクセスすることはできず、b)通常はソース管理の外にあることを意味します。 – JvO

関連する問題