Gitをバージョン管理システムとして使用してCakePHPでシステムを開発しています。テスト用のサーバーには作業コピーがあり、別のデータベースには作業用のサーバーがあります。変更を行うたびに、システムをテストできるようにデータベース構成を変更する必要があります。異なる内容を持つ2つのファイルをテスト用に1つずつ、プロダクションサーバーに別の方法で保存する方法はありますか?ブランチは良い方法ですか?テスト環境とプロダクション環境を設定する
3
A
答えて
1
かなり粗くて効果的なテクニックに移行しました。私の開発環境では、「environment_development」という空のファイルがあります。私のプロダクション環境では、「環境プロダクション」と呼ばれるものがあります(ビジュアル強調のための別のケース)。私のgitignoreファイルは、これらの両方を無視するように設定されています。
私のアプリケーションのフロントコントローラ(私はKohanaフレームワークを使用していますが、CakePHPは何か類似していると推測しています)は、これらのファイルの有無をチェックし、IN_PRODUCTION定数を適切に設定します。残りのコード(データベース構成、エラー処理など)はこの定数の値をチェックし、必要に応じて動作を変更できます。
私は、$ _SERVER [「SERVER_NAME」]チェックを使用するために使用されるが、この方法は、次のような利点があります
- それはあなたがコマンドラインから実行したいのアプリの部分がある場合でも動作します例えば、$ _SERVERが設定されていない場合、cronjobsとして使用されます。
- アプリが複数のドメインで実行されている場合でも機能します。
- 誰かがアプリケーションの別の作業コピーをチェックアウトすると、環境ファイルを作成するまで機能しないので、開発者が本番データベースに対して開発コードを実行する可能性はほとんどありません。 。
4
あなたはブランチでそれをしたくないでしょう。私はPHPに具体的に話すことはできませんが、別のブランチに2つのファイル(テスト設定&プロダクション設定)を保存するのではなく、それらをまとめておきますが、環境変数で、ランタイム。
(これは、それがRailsの中で行うのかであり、それはうまく動作します。)
0
データベースは、環境に依存している場合、あなたはdatabase.php
ファイル内でこのような何かを行うことができます。私は
class DATABASE_CONFIG {
var $default = NULL;
var $prod = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'username',
'password' => 'password',
'database' => 'productionDatabaseName',
'prefix' => '',
);
var $staging = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'username',
'password' => 'password',
'database' => 'stagingDatabaseName',
'prefix' => '',
);
//var $dev = ...
// Chooses production or staging depending on URL
function __construct()
{
if(isset($_SERVER['SERVER_NAME']))
{
switch($_SERVER['SERVER_NAME'])
{
case 'myhostname.com':
case 'www.myhostname.com':
$this->default = $this->prod;
break;
case 'staging.myhostname.com':
$this->default = $this->staging;
break;
default:
$this->default = $this->dev;
}
}
else // Use local for any other purpose
{
$this->default = $this->dev;
}
}
}
関連する問題
- 1. サンドボックスvsプロダクション環境
- 2. Tornado Webプロダクション環境
- 3. 環境設定
- 4. シームレスにプロダクションに移行するApache環境の開発環境
- 5. Web.configプロダクション環境のパフォーマンス - ベストプラクティス
- 6. パーシステントダッシュボードウィジェット環境設定
- 7. Codeigniter環境設定
- 8. ステージング環境設定
- 9. 環境設定画面なしの環境設定?
- 10. VoIPテスト環境
- 11. Android JUnitの環境設定のテスト
- 12. herokuでプロダクション環境変数を設定する方法は?
- 13. Twitter Bootstrapテスト環境
- 14. Xcodeビヘイビアの環境設定
- 15. .NET 4.0環境の設定
- 16. の設定環境変数
- 17. 環境変数の設定
- 18. Evernote APIの環境設定
- 19. Eclipse環境の設定
- 20. Androidのアプリケーション環境設定
- 21. 設定/環境はRedmineの
- 22. アンドロイドユニットテスト:アクティビティをテストする前に環境設定をクリアする
- 23. プロダクション環境でのログ/トレース対象
- 24. java:プロダクション環境でのprintStackTraceの使用
- 25. プロダクション環境 - http 500エラーページ - no stacktrace please
- 26. 環境変数を設定する
- 27. SharePoint開発環境を設定する
- 28. 環境ごとのClojureデータベース設定
- 29. 言語設定環境とM-xシェル
- 30. 環境ごとの設定ファイル
私は同意します。実際にバージョンに関係していないものについては、あなたのバージョン管理ソフトウェアに非常に頼りにしたくありません。あなたは、本質的にテスト可能であるようにアプリケーションを設計する方がよいでしょう。 –