leftovers...

about grails groovy

Grails 1.2-M4 リリースだよ!

Grails 1.2-M4がリリースしました。
なんだか今回は元々Grails 1.2-RC1の予定だったのですが、どうやらSpring3待ちってことで、Grails 1.2-M4リリースになりました。公式情報によると、11月末にSpring3がリリースになるのでリリース後にGrails 1.2-RC1をリリースして、安定に向けていくようです。

Grails 1.2-M4はマイルストーンリリースなので、M1-M3のバグ修正+新規機能追加となります。
詳しくは以前のエントリーも参考にしてくださいなっ。
Grails 1.2-M3 に更新! - leftovers...
Grails 1.2-M2 リリースですよ! - leftovers...
Grails 1.2-M1 リリース & JSUG+JGGUG合同勉強会 お疲れ様でした。 - leftovers...

さて本題!

Grails公式のリリースノート
http://www.grails.org/1.2-M4+Release+Notes

BootStrap に環境指定。
BootStrap.groovy で環境の指定ができるようになりました。

def init = { ServletContext ctx ->
        environments {
            production {
                ctx.setAttribute("env", "prod")
            }
            development {
                ctx.setAttribute("env", "dev")
            }
        }
        ctx.setAttribute("foo", "bar")
 }


GORMデフォルト値のグローバル定義
GORMで使用する定義の共通内容をデフォルト値としてgrails-app/conf/Config.groovyに設定できるようになりました。

例えばシーケンスの定義とか。

grails.gorm.default.mapping = {
   cache true
   id generator:'sequence'
  'user-type'( type:org.hibernate.type.YesNoType, class:Boolean )
}

共通利用したい制約を指定とか。

grails.gorm.default.constraints = {
   '*'(nullable:true, blank:false, size:1..20)
}

制約グループ名を定義して、、

grails.gorm.default.constraints = {
   myConstraints(nullable:true, blank:false, size:1..20)
}

ドメインクラスで使用する

static constraints = {
  myProperty shared:"myConstraints"
}

#わぁぁあ、便利!


Webフローのプラグイン化(外部化)の追加実装
onEntryやonRender等のWeb FlowイベントがGrails Web Flow DSLに実装されました

def searchFlow = {
  onStart {
    println "started"
  }
  onEnd {
    println "ended"
  }

  displaySearchForm { 
    onRender { println "rendering" } 
    onEntry { println "entered" } 
    onExit { println "exited" }

    on("submit") { 
      [results: Book.findAllByTitle(params.title)] 
    }.to "displayResults"

  } 
  displayResults() 
}


Better JSONBuilder
JSONBuilderを大幅修正!JSONレスポンスをこんな感じに返せます。

render(contentType:"text/json") {
	categories = [ { a = "A" }, { b = "B" } ]
}

Which will produce:

{"categories":[ {"a":"A"} , {"b":"B"}] }

以前のバージョンの実装に戻して使用する場合は、Config.groovyに、grails.json.legacy.builder=trueを定義すれば良いです。



とりあえずGrails 1.2-M4はこんな感じです。
他に、自分が注目していたバグFixは、GAE/Jでの問題点を修正した、これです。
attempted fix for GRAILSPLUGINS-1546 · grails/grails@b134adb · GitHub
この問題は、Grailsのコアメンバーがやらかした訳ではなくて、GitHubでソース管理をするようになってからいろんな人がコミットできるようになり、凡ミスをそのままマージしてしまったとこから始まってた感じです。#それに気が付かないのも問題ですが・・・。
まあ、とにかくこれで強引修正しなくてもGrails 1.2が簡単にGAE/Jで動くのを期待。

#休み中に試す!