2011-07-12 12 views
4

現在、Phingをデプロイに使用しており、dbdeployを使用してデータベースの変更を適用しています。しかし、デプロイメント時には、オブジェクトモデルによって処理される方が良い場合があり、展開後に手動で実行しているPHPスクリプトを1回書いています。デプロイ時にスクリプトを1回実行する

実行中のスクリプトを処理するdbdeployに似た既存のソリューションがありますか?さらに重要なのは、実行されたスクリプトを追跡して各スクリプトが1回だけ実行するようにすることです。

答えて

1

これは潜在的に他の人にも役立つと思います。あなたが他の解決策を考えることができない場合は、DBDeploy taskを実装するファイルを見て、それをカスタムタスクにコピーし、データベースチェック機能を再利用してください。SQLスクリプトを生成する代わりに、必要。

もしあなたがそれに満足しているなら、それをPhingに寄付することも考えられます。私は彼らがそれを含めて幸せになると確信しています(Phing-How To Contribute参照)。

+0

それは面白いです。何らかの理由で、私はその機能のほとんどがdbdeploy自体で処理されていると仮定しましたが、Phingタスクに組み込まれている "changelog"概念の良い部分のように見えます。他に何も存在しなければ、これは私たちに "あなた自身のロール"ソリューションを開始するのに最適な場所を与えるだろう。 –

+0

はい、これはちょっと混乱するかもしれませんが、PHPのDBDeployは実際には純粋にPhingタスクとしてPHPに実装されたDBDeployの「アイデア」です。スクリプトは実際には非常に簡単なので、ニーズに合わせて変更するのは簡単です。がんばろう! – poisson

0

方法について:

  1. フォルダにスクリプトを置きます。
  2. フォルダをループしてスクリプトを実行します。
  3. 実行後にスクリプトファイルを削除/移動します。

サウンドはハックのようですが、イージーウェイです。

+0

dbdeployの動作の利点の1つは、変更を永久に保存し、実行したトラックを保存できることです。このようにして、すべての開発者が開発環境で実行するためのバージョンコントロールが存在します。たとえば、新しいデータベースから始め、dbdeployを実行して最新の状態にすることができます。私はこれを何度でも行うことができます。 –

-1

Phing ExecTaskとおそらく最も簡単なのは、Phing User Guide (stable)も参照してください。

+0

この場合、ExecTaskはどのように役立ちますか?その質問の作成者は、実行されたスクリプトが何であるかを追跡するソリューションを求めています。 ExecTaskでこれを実現する方法はありません。だから私はちょうど不思議に思っていた... – poisson

+0

リンクされたマニュアルはまあまあ、それは単なるスタートです。時間をかけてPhingタスクを作成する方が良いでしょう。そして、実際にOPはデプロイ毎に一回実行するスクリプトを要求していたので、元の質問は正確ではなく、同じバージョンのデプロイが特定のシステム(特定のシステム?複数のシステムで? ... – hakre

関連する問題