Hatena::ブログ(Diary)

leftovers... このページをアンテナに追加 RSSフィード

2016-09-22

2016-09-02

Grails 3.2 RC1リリース!!

Grails 3.2 RC1リリースです!!!!

正式リリースが待ち遠しい!

Grails 3.2系の新機能は、公式サイトのWhat's NEWを参照!

http://docs.grails.org/3.2.x/guide/introduction.html#whatsNew

ザックリまとめるとこんな内容です。


GORM 6 Suite

GORM6公式のWhat's Newに詳しい情報載ってます。

http://gorm.grails.org/6.0.x/whatsNew/manual/index.html


RxJavaサポート

RxGORM対応に追加として、RxJavaサポートもプラグインとして提供

https://grails.org/plugins.html#plugin/rxjava

RxJavaを使用したリアクティブコントローラ

RxJavaプラグインでは、コントローラからObservableのレスポンスとシームレスなRxGORMとの統合でノンブロッキングなリアクティブリクエストのハンドル可能とします。

def show() {
    String author = params.author 
    Book.get(params.id).map { Book book ->
        rx.render view:"book", model:[book:book, author:author] 
    }
}

RxJavaでServer Sent Events

GrailsとRxJavaで簡単Server Sent Eventsレスポンスを発行できます。

def index() {
    rx.stream { Subscriber subscriber -> 
       for(i in (0..5)) {
           if(i % 2 == 0) {
               subscriber.onNext(
                   rx.render("Tick") 
               )
           }
           else {
               subscriber.onNext(
                   rx.render("Tock")
               )
           }
           sleep 1000 
       }
       subscriber.onCompleted() 
   }
}

サンプルアプリケーションはコチラ:

https://github.com/grails-plugins/grails-rxjava/tree/master/examples/server-sent-event-example


AngularJS 1.0 Scaffolding

AngularJSプロファイルリファインと新たにAngular Scaffoldingプラグインが追加されます。

Angular Scaffoldingプラグインでは、CRUDを実現するAngularJS 1.xのクライアントコードが生成可能な ng-generate-all コマンドが追加されます。

※Angular2用は将来のバージョンで実装予定。

JSON Views 1.1

Grails 3.2では、いくつかの新機能を追加したJSON Views 1.1プラグインが同梱されます。

テンプレート継承

例えばgrails-app/views/_parent.gsonを親gsonとして。

model {
    Object object
}
json {
    hal.links(object)
    version "1.0"
}

コレを継承するには以下のように記述します。

inherits template:"parent"
model {
    Person person
}
json {
    name person.name
}

グローバルデフォルトテンプレート

どのGORMカスタム型に対してもグローバルテンプレートが作成できるようになります。

これによりJodaTimeライブラリ対応やMongoDBの用にカスタム型(GeoJSONなど)を提供しているデータストアの対応が可能となります。

グローバルテンプレートは、"_"にクラス名を指定した単純なJSONテンプレートです。例としてGeoJSONテンプレートを参照。

テンプレートが見つからない場合のフォールバックテンプレートとして、/object/_object.gson を提供できる機能も追加されています。

向上されたHALサポート

HAL対応拡張で、_embeddedと_linksのコントロールが対応されました。

model {
    Book book
}
json {
    hal.links(self: book )
    hal.embedded(authors: book.authors)
    hal.inline(book) {
        pages 300
    }
}

今回のHALサポート向上でHALページネーション対応も向上しています。

依存ライブラリ更新

Grails 3.2では以下の依存ライブラリ更新しています。

その他の新たな機能

日付データバインディングフォーマットに新たな既存値追加

日付フォーマット"1970-01-01T00:00:00.000Z"がデフォルトで正常にパースできるようになりました。


Grails2でのrun-scriptコマンドが戻ってきました!

run-scriptコマンド復帰です!Grails3でもGrailsコンテキストでラップされたGroovyスクリプトが実行できます。

$ grails run-script my-groovy-script.groovy

詳しくはrun-scriptドキュメントを参照

RESTプロファイル改良

RESTプロファイルは、RESTアプリケーション専用に実用的なUrlマッピングMIMEタイプ定義可能になります。

システムプロパティでBootstrapプロセスを省く指定

Grailsランタイム起動時の*Bootstrap.groovy実行を条件によって省くことが可能になります。

システムプロパティに grails.bootstrap.skip指定する事で実行を省けます。

リクエストのボディでデータバインディングの仕様変更

よりHTTP/1.1仕様に近づけるためGETとDELETEリクエストのボディ内容はデータバインディングを無視するようになります。

コンテントの長さが0の場合もリクエストボディが無視されます。

プロファイル向上

リポジトリーのクレデンシャル定義はsettings.groovy可能になります。詳しくはプロファイルセクションのドキュメントを参照。



相変わらずのザックリ意訳ですが、お役に立てれば幸いです。



Grails 3.2 RC1 公式リリースノート

https://github.com/grails/grails-core/releases/tag/v3.2.0.RC1

http://docs.grails.org/3.2.x/guide/introduction.html#whatsNew

https://github.com/grails/grails-core/issues?q=milestone%3Agrails-3.2.0.RC1

コミットリスト https://github.com/grails/grails-core/compare/v3.2.0.M2...v3.2.0.RC1?w=1

ダウンロード https://github.com/grails/grails-core/releases/download/v3.2.0.RC1/grails-3.2.0.RC1.zip

ドキュメント http://grails.github.io/grails-doc/3.2.x/