インタラクティブモードで操作していくほうが効率が良いため、まずはインタラクティブモードを起動。grailsはじめにデータベースの変更履歴を管理するchangelogを作成する。xmlかgroovyのDSLが使える。grailsで使うならgroovyを選択したくなるのが自然。changelogを作成する方法2種類。データベースの情報をもとに生成するか、GORMのドメインクラスを元に生成するか。実行する(単に空ファイル作るだけなのdbm-create-changelogで本来は良い)。changelog.groovyenvironmentとファイル名を指定して実行する(ここではどのDBも空なので何していしても一緒)。environmentは省略するとdevが使用される。DSLの定義ファイルになる。うまくいくとgrails-app/migrations/changelog.groovyが生成されているはず。{}このようなファイルができてればOK。changelogにまだ変更がない、データベースもまだ空。いうことで変更履歴の同期がとれている。dbm-changelog-syncこれを実行すると初回実行の場合はデータベースにdatabasechangelogに作られる。中身は空だが、この中で変更履歴の反映が管理されていく。ドメインクラスを作る。title}ドメインの開発が完了!これをデータベースに反映するchangelogを作成する。changelogを作成する方法はdbm-generate-changelog、dbm-generate-gorm-changelogを使用する方法が上で出てきたが、これらは初回のchangelogを作る際に既存のデータベースが存在していたり、既存のドメインをもとに一括生成する用途で、一度開発が始まった後は基本的にはdiffを使って前回との差分のchangelogを生成していく。diffのコマンドは、dbm-diff、dbm-gorm-diffの2つがある。前者データベースの指定されたenviromentのDB同士の比較、後者はドメインとDBの比較が行える。今回はdbm-gorm-diffを使う。add-book.groovyこれの意味するところenviromentがdev(省略したので)のDBと、現在のドメインとの差分、それをadd-book.groovyに出力する。--addというオプションは出力されたファイルへの参照を起点となるchangelogファイルに追加してくれるというもの。changelog.groovyを見てみる。'add-book.groovy'}add-book.groovyが追加されていることがわかる。続いてadd-book.groovyを見てみる。}}Bookドメインを反映するchangesetが定義されており、1351331869483-1と1351331869483-2のchangesetがある。changesetが出来たので、これをデータベースに反映する。changesetを反映するにはdbm-updateを使用する。dbm-update反映が終わったらデータベースを確認してみる。rows)bookテーブルとシーケンスが生成されて、反映したchangesetがdatabasechangelogに記録されている。この様に適用したchangesetを記録するため、もう一度dbm-updateを実行しても、同じidのchangesetが実行されない。Authorドメインを作成する。name}BookからもAuthorへの関連も追加。add-author.groovyadd-author.groovyはこんなん。createTableやらbookへのaddColumnがあったりする。}}changesetを反映する。rows)dbm-updateを使うのがめんどくさかったり、自動でやりたい場合はConfig.groovyに以下の設定を追加することでアプリケーションの起動時に自動反映させることが出来る。["changelog.groovy"]updateOnStartをtrueにすることでアプリケーションの自動的にupdateOnStartFileNamesに指定されたファイルを反映する。updateOnStartFileNamesはgrails-app/migrationsからの相対パスを指定する。warとして動作する場は空気読んで_Events.groovyでWEB-INF/classes/migrationに置換してくれているから動作環境を心配する必要はない。開発を終えてプロダクション環境にデプロイしてみる。war生成されたwarをtomcatにデプロイする。Databaseを確認。さきほどのdevDbではなくprodDbのほう。Pluginでcontextを使用するLiquibaseではchangeSetにcontext属性が設定できます。読者になるはてなブログをはじめよう!yamkazuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。