-
Notifications
You must be signed in to change notification settings - Fork 130
アップデートスクリプト
baserCMSは、アップデート時にアップデートスクリプトを準備しておくと、そのスクリプトを自動実行する仕組みとなっています。
アップデートスクリプトは、データベースの構造変更 や、CSVデータの読み込み、データベース内のデータの更新、app
フォルダ内のファイルやフォルダ構造の変更などを行いたい場合に利用します。
アップデートスクリプト(update.php)は、アップデートフォルダ内に配置します。
アップデートフォルダは /lib/Baser/Config/update/
の配下に作成した、次にリリースするバージョン番号のフォルダとなります。
(例) /lib/Baser/Config/update/3.1.0/
アップデートスクリプトの配置場所は次のようになります。
(例) /lib/Baser/Config/update/3.1.0/update.php
アップデート画面に注意事項等のメッセージを表示したい場合は、次のファイルを作成し、変数 $updateMessage を定義し、メッセージを代入します。
//(例)/lib/Baser/Config/update/3.1.0/config.php
$updateMessage = 'アップデートを行う前に files フォルダのバックアップを作成しておいてください。';
アップデート時の各処理について、成功可否等のメッセージ表示したい場合は、UpdatersController::setUpdateLog() を利用します。下記のログファイルにも記録されます。
/app/tmp/logs/update.log
// メッセージの設定例
$this->setUpdateLog('users のテーブル構造に成功しました。');
アップデートを実行すると、データベースに記録されているバージョン番号を更新し、再度、実行するには、データベース上のバージョン番号を手動で元に戻す必要があります。
※ データベース上のバージョン番号は、site_configs テーブルの name フィールド に、version
という値が格納されているレコードに保存されています。
その際、通常、バージョン番号となっているアップデートフォルダの名称を「test」とすると、データベース上のバージョン番号が更新されず、何度もアップデートスクリプトのテストを行う事ができます。
※ アップデートスクリプトによって変更された内容のリセットは手動で行う必要があります。
アップデートスクリプト内で、データベース情報を変更後、モデルを利用してデータの更新を行う場合は、ClassRegistry
を利用せず、モデルクラスを直接イニシャライズしてください。
モデル内にキャッシュされたテーブル構造情報が古いままなので、エラーが発生する可能性が高いです。