勉強会に向けてGrails AppEngine Pluginについて調査

Grails

環境設定(プラグインインストールまでの流れ)

以前紹介した資料どおり。

Google App EngineでGrails! - "Google Docs"

grails appengine pluginインストール後に、jpaかjdoかどちらを使用するか聞かれるが、jpaを選んだ。理由は特にない。

ちなみに、grails appengine pluginのversionは0.8.3になっていた。着実にバージョンアップしている。

ドメインクラスの作成

Google App EngineでGrails! - "Google Docs"

上記の資料ではドメインクラスを使用しない例しか記載していないかったので、ここでドメインクラスを作成。grails-app/domain直下にクラスを配置すると動かないということなので、適当にパッケージを作成する。ありきたりだが本の情報を管理するBookクラスを作成。

grails create-domain-class com.Book

Bookドメイン作成

作成後、カラムを追加。

  • String name
  • String isbn

ビュー、コントローラーも作成

grails generate-all com.Book

viewとcontrollerも作成。

アプリケーション起動

grails app-engine run

実行してからなかなか起動しない。かなりあせる。問題があるのか…と思ったらlocalhoatになってた。そりゃ起動しない。

起動はするようになったけれども、com.BookControllerへアクセスでエラー発生。以下のとおり。

org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: static com.Book.list() is applicable for argument types: (org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[max:10, action:list, controller:book]]
 at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
 at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
 at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
 at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:306)
Caused by: groovy.lang.MissingMethodException: No signature of method: static com.Book.list() is applicable for argument types: (org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[max:10, action:list, controller:book]]
 at com.BookController$_closure2.doCall(BookController.groovy:14)
 at com.BookController$_closure2.doCall(BookController.groovy)
 ... 4 more

com.Bookにlistメソッドがないと言われる。ローカルで動作させるのは無理か??

以下のサイトの記述がヒントになりそうなので、明日試してみる。 Grails - Plugin: Grails AppEngine plugin

To get GORM-like behavior with dynamic finders and so on you need to install the GORM-JPA plugin (there currently isn't a GORM API for JDO, sorry!): grails install-plugin gorm-jpa Once this is installed you can using of the regular methods provided by the GORM API like save(), delete() and so on as well as dynamic finders.

分からないので明日の朝試してみる。

Grails

Posted by genzouw