Hatena::ブログ(Diary)

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

2009-12-04

Grails 1.2 RC1 リリースっ。

Grails 1.2 RC1リリースですね。

最近リリースラッシュのGroovy系のソフト達。

Grails 1.1.x系のバグフィックスGrails 1.1.2がリリースされたり。

http://www.grails.org/1.1.2+Release+Notes

Groovyは、1.6.6と1.7-RC-1そしてGrails1.2のバグFix用にGroovy-1.6.7

そして、Gaelyk 0.3.2のリリースと、

Gantは1.8.1、http://gant.codehaus.org/

Gradleも0.9がリリース(まだ?) http://www.gradle.org/

Griffonは0.3-SNAPSHOTがいたりとか・・・。http://griffon.codehaus.org/Download

と何気にGroovy関連を並べてみる!

Spring 3.0.0.RC3がリリースされて、http://www.springsource.org/node/2198 (ぇえ!正式リリースじゃなかったのん??)

そして、ここ最近ちゃんと短い期間で正式1.2へ向けてマイルストンリリースされているGrailsのRC1がリリースです。

はい!本題!

今回のGrails 1.2 RC1リリースに含まれる新機能のご紹介です。


詳しくは以下のエントリーも参考に!

Grails 1.2-M4 リリースだよ! - leftovers...

Grails 1.2-M3 に更新! - leftovers...

Grails 1.2-M2 リリースですよ! - leftovers...

Grails 1.2-M1 リリース & JSUG+JGGUG合同勉強会 お疲れ様でした。 - leftovers...

Grails-1.2-M3辺りでも紹介した、依存解決関連 (Apache Ivyで実装されてる)が、さらにパワーアップ!?

コマンドからもローカルキャッシュにレポからライブラリ引っ張れます。

grails install-dependency mysql:mysql-connector-java:5.1.5

ドメインクラスのnamedQueriesプロパティDSL記述します

class Publication {
  String title
  Date datePublished

 static namedQueries = { 
   recentPublications { 
     def now = new Date() 
     gt 'datePublished', now - 365
   }
   publicationsWithBookInTitle { 
     like 'title', '%Book%' 
   } 
 }
}

以下のように使用できます。

def recentPubs = Publication.recentPublications.list()
def recentPubs = Publication.recentPublications.list(max: 10, offset: 5)

Publication.recentPublications.count()
  • CriteriaビルダーでsqlRestriction実装
def c = Person.createCriteria()
def peopleWithShortFirstNames = c.list {
    sqlRestriction "char_length( first_name ) <= 4"
}

grails-app/domains内にあるドメインクラスにGORMシンタックスの代わりにアノテーションでも定義できます。(GAE/J対策になるかな!?)

こんな感じです。

import javax.persistence.*

@Entity
@Table(name = "animal")
class Animal {

  @Id 
  @GeneratedValue
  int id
  String name
  @ManyToOne
  @JoinColumn
  Owner owner

  static constraints = {
    name blank:false
  }
}

コントローラとかで使うparamsとタグリブのattrsにnullセーフコンバータメソッドが追加されました。

例えばこんな感じ

int('パラメータ名')とかlong('パラメータ名')とかboolean('パラメータ名')と付ける

def total = params.int('total')

あと、同じ名称のパラメータリスト型にまとめるlist('パラメータ名')

(これプチ便利ぢゃん)

def names = params.list('names')

プロジェクトsrc/doc/ref、src/doc/guide以下にファイルを配置することで、Grailsリファレンスと同じドキュメントエンジンプロジェクトで利用可能。

これが、さらに、Grailsの外でも使えるようになりました。

ぉぉ!これ待ってた、他でも使いたいね!

Gradleのシンタックスでは、こんな感じ

compile group: 'org.grails', name: 'grails-docs', version:'1.2.0.RC1'

Antタスクだと、

ant.taskdef (name: 'docs', classname : 'grails.doc.ant.DocPublisherTask')
ant.docs(src:"src/docs", dest:"build/docs",
                properties:"src/docs/doc.properties")

※個人的に試していないのでリリースノートそのまま書いています(-.-);

// Config.groovy

beans {
     someService {
          someProperty = new SomeObject()
     }
}

元々Grailsでのテスト実装では、JUnit以外で実装されたテストGrailsの深い部分で使用する際、結構大変でしたが、(例えば easybとか)、今回オーバーホールされて、様々なテストに対応しやすくなりました。


テストフェーズの指定方法が向上しました。

※多分spockはspockプラグインが必要。まあ、以下は例としてなので。

grails test-app <phase>:<type>
grails test-app unit:spock    // ‘spock’ テストを ‘unit’ フェーズで実行

どちらもオプショナルなので、以下のようにどちらかの指定もできます。

grails test-app unit:    // ‘unit’フェーズで全てのタイプのテストを実行
grails test-app :spock    // 全てのフェーズで、‘spock’テストを実行

‘SomeController’の全てのテストを ‘unit’フェーズで実行

grails test-app unit: SomeController

‘unit’ と ‘integration’の全てのタイプのテストを実行

grails test-app unit: integration:

従来の指定方法でも動きます。

grails test-app --unit    // grails test-app unit: と同じです
grails test-app -clean
  • System.outとSystem.errをエコーさせる。

デフォルトでは、テスト時は何も表示されません。-echoOutや-echoErrを指定すると表示を許可します。

grails test-app -echoOut -echoErr


そして、このリリースラッシュの理由はGroovy Grails eXchange 2009だったりもするらしいです。そうです、自分スピーカーで2年前に(もうそんなになるのか・・ xmlDo.net - Grails Web Development: Grails eXchange 2007)参加したことある、Groovy Grailsの祭典がロンドンで、 12/9、12/10に開催されます。

http://skillsmatter.com/event/java-jee/groovy-grails-exchange-2009

行くという方いたら、連絡ください!オイスターカード渡します! (本気です)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証