uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

Grails on GAEにおける既知の問題(と回避策)

Grails on The Google App Engine: Everything you wanted to know but were afraid to ask(Grails on GAEについて聞きにくいけど知りたいことの全て)というブログ記事の一部を訳してみました。

Grails on GAEにおける既知の問題(と回避策)

  • 先にGoogle App Engine開発環境をインストールし、環境変数を設定しておく必要がある。app-engine plugin version 0.81.にはGoogle SDK Version 1.2.0が推奨されている。
  • GORMサポートはまだ無い。gorm-jpa pluginが開発中でこれには制限が無い。
  • SpringのCommonsMultipartResolverがファイルに書こうとするせいでFileアップロードは壊れる。提示されている解決策は、自前のMultipartリゾルバを書くこと。
  • GrailsのScaffoldテンプレートで、one-to-oneリレーションに対するedit/createが駄目である。なぜかというとテンプレート中でDomainClass.listがハードコーディングされているから。この問題はlistを手動で作ってテンプレートに引数として渡してやることで解決できる。あるいは自前の.listのダイナミックラッパーを書いても良い。
  • app-engine version 1.2.1を使っている場合、grails-app/conf/にあるdatasources-index.xmlは削除しておかないとこの問題に直面する。(もしインデックスを作っているのであれば、XML宣言の中にあるnamespace参照を削除する)
  • deployeするときのユーザ名とパスワード入力が、1行目を無視する場合、config.groovy中にパラメータを書いておくこともできるし、
      google.appengine.email = “myemail@me.com”
      google.appengine.password = “mypassword”

あるいはユーザ名/パスワードプロンプトが表示されたら単にenterを叩いてもよい。*1

  • テンプレートのgenerate-allコマンドにはhibernateに対する依存があるみたい。例外が起きたら、hibernateプラグインを再インストールしてからgenerate-allを呼ぶ(私自身はこの問題に遭遇していませんが)。
  • SecurityプラグインもAuthenticationプラグインもAcegiプラグインも使えません。でもここにGAE用ロールベースアクセスパッチというのがある。

*1:訳注: どういう状況か不明