leftovers...

about grails groovy

Grails 1.3.5 リリース!新機能付き!

Grails 1.3.5 が、リリースされました。
今回のリリースでは、バグフィックスと、若干の新実装などを含みます。前回リリースされた、1.3.4では、REST関連が壊れてたので、個人的には更新しませんでした。今回のリリースで、そのあたりも修正済み (see 6614) なので、他に大きな問題が無い限り、今のプロジェクトで使ってるバージョンも更新する予定です。

Grails 1.3.5 公式リリースノート
http://www.grails.org/1.3.5+Release+Notes

Changelog http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=11063&version=16651
ダウンロード http://grails.org/Download
ドキュメント http://grails.org/doc/1.3.5



今回の更新内容!

最新版のGroovy 1.7.5に更新されました。
詳しくは、Groovyのリリースノートを参照してください。
http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10242&version=16639

名前付きクエリーにソート実装
名前付きクエリーで呼び出すメソッドに、 ドメインのスタティックメソッドと同じように、"sort", "ordering", "ignoreCase"等を指定できます。

Person.recentPublications.list(sort: 'title', order: 'desc', ignoreCase: true)

新機能: GSPで使用してるテンプレート情報をデバッグ表示
http://jira.codehaus.org/browse/GRAILS-5163

renderタグで使用しているテンプレートGSPの内容が、実際にどの位置にレンダリングされたか等の情報を、生成されたHTML内のコメントで参照できるようになります。
この機能を使うには、情報を参照したいページのURLに、"?debugTemplates"または、"&debugTemplates"を付加するだけです。それぞれのテンプレートの位置には連番も付加されます。この"debugTemplates"は、開発モードだけで動作します。

debugTemplates機能で付加されたコメント例:

<!-- GSP #2 START template: /home/user/sampleapp/grails-app/views/_carousel.gsp
 precompiled: false lastmodified: 22.6.2010 10:45 -->
.
.
<!-- GSP #2 END template: /home/user/sampleapp/grails-app/views/_carousel.gsp
 rendering time: 115 ms -->

各コメントには、開始と終了、レンダリング時間が表示されています。

プリコンパイルされたGSPのリロードサポート
http://jira.codehaus.org/browse/GRAILS-5787
使用方法は、Config.groovyに以下の情報を設定します。

grails.gsp.enable.reload = true
grails.gsp.view.dir = "/var/www/grails/my-app/" //GSPのディレクトリを指定

指定したディレクトリには、Grailsアプリケーションのviewsディレクトリから、GSPファイルをコピーします。

mkdir -p /var/www/grails/my-app/grails-app/views
cp -R grails-app/views/* /var/www/grails/my-app/grails-app/views

詳しくはドキュメントを参照。
http://grails.org/doc/1.3.5/guide/6.%20The%20Web%20Layer.html#6.2.6%20Making%20Changes%20to%20a%20Deployed%20Application

ビーンに対してオーバーライドしたプロパティのリロードに対応。
http://jira.codehaus.org/browse/GRAILS-5763
今までは開発時に、ビーンに対してオーバーライドした内容は変更を加えた後のリロード時には内容が失われていました。

ビーンのスコープ問題が解決されました。
参照 http://jira.codehaus.org/browse/GRAILS-6278

テストターゲットをフルネームで指定可能になりました。
http://jira.codehaus.org/browse/GRAILS-6462
元々、サフィックスにつける"Tests"とか"Test"を書けなかったのですが、今回からフルネームで指定できます。

grails test-app MyTests

resources.groovy内から、applicationインスタンスを変数で参照
http://jira.codehaus.org/browse/GRAILS-6363
今までだと、ApplicationHolderを使ってましたが、簡単に呼び出せるので良いですね。

import grails.util.*beans = {
    if (application.config.my.company.mockService) {
        myBean(my.company.mock.MockImpl) {
            bookService = ref("bookService")
        }  
    } else {
        myBean(my.company.MyBeanImpl) {
            bookService = ref("bookService")
        }
    }
}

ファンクショナルテスト対応の改善。
ファンクショナルテスト機能強化として、リモートインスタンスやデプロイされたアプリケションにもテストを実行できるようになります。まだ全てのテスト用プラグインが対応しているわけでは無いですが、直ぐに対応すると思います。

詳しい情報はドキュメントを参照。
http://grails.org/doc/1.3.5/guide/9.%20Testing.html#9.3%20Functional%20Testing

run-war起動時でのJVMオプションの指定
Tomcatプラグインのデフォルトでは、run-war時に512mのMaxヒープサイズに設定されフォークされたJVMが起動します。今回追加された実装では、BuildConfig.groovyにJVMオプションを定義できるようになりました。

grails.tomcat.jvmArgs = ["-Xmx1024m", "-XX:MaxPermSize=256m"]

生成されたURLリンクをデフォルトでキャッシュする機能
createLinkタグで生成されたリンクをLRUキャッシュでキャッシュするようになりました。デフォルトのキャッシュサイズは160000文字ですが、パラメータ指定で変更できます。

// set UrlCreatorCache size to 200000 characters
grails.urlcreator.cache.maxsize = 200000
// disable UrlCreatorCache
grails.urlcreator.cache.maxsize = 0

LRUキャッシュは、concurrentlinkedhashmap 1.0_jdk5で実装されています。同じくURLマッチでも使用されていて、該当箇所のメモリーリーク問題を解決しています。

grails.logging.jul.usebridgeが有効になっている場合の注意点
以前のGrailsでは、grails.logging.jul.usebridgeがConfig.groovyで、あらかじめ有効になっていました。SLF4Jのドキュメントによると、JULからSLF4Jブリッジがパフォーマンス低下につながるとしてるので、プロダクション環境では、grails.logging.jul.usebridgeを無効にすることをおすすめします、とのこと。




以前のGrails 1.3.x系の更新内容も参考にしてください。
Grails-1.3.4 リリース!!!主にバグフィックス+Groovy 1.7.4に更新! - leftovers...
Grails 1.3.3 リリース! - leftovers...
Grails 1.3.2 リリース! - leftovers...
Grails 1.3.1 リリース! - leftovers...
Grails 1.3 リリース! - leftovers...

Grails 1.3.x以降の公式リリースノート
1.3.4 リリースノート http://grails.org/1.3.4+Release+Notes
1.3.3 リリースノート http://grails.org/1.3.3+Release+Notes
1.3.2 リリースノート http://grails.org/1.3.2+Release+Notes
1.3.1 リリースノート http://grails.org/1.3.1+Release+Notes
1.3.0 リリースノート http://grails.org/1.3+Release+Notes