Play! framework 2.1 → 2.2に上げた


正月休みを利用して、Play! framework 2.1のプロジェクトを2.2にした。あ、皆様あけましておめでとうございます。

結論から言っちゃうと、Play 2.2 Migration Guideに書いてある情報で大体網羅されていた。

Play自体のアップグレード

Migration Guide通り、Build.scalaとか修正すればOK。最新バージョンは2.2.1なので、ドキュメントに2.2.0って書いてある所は、2.2.1と置き換えて読めばOK。

サードパーティライブラリのアップグレード

Playのプラグインとかライブラリでは、Play 2.1.xの人はバージョンMを、Play 2.2.xの人はバージョンNを使ってくれ、っていうパターンのものが結構ある。

そういったライブラリとかのバージョンを正しいものに変更せずにビルドしようとすると、以下の様なエラーが出た。

[error] Modules were resolved with conflicting cross-version suffixes in {file:/Users/kazu/Documents/workspace/projectfoo/}projectfoo:
[error]    org.scala-stm:scala-stm _2.10, _2.10.0
[trace] Stack trace suppressed: run last projectfoo/*:update for the full output.
[error] (projectfoo/*:update) Conflicting cross-version suffixes in: org.scala-stm:scala-stm
[error] Total time: 0 s, completed Jan 1, 2014 12:31:37 AM

個人的に使っていて、バージョン変更する必要があったのはこの辺。

ソースの変更

自分が必要となったところだけ記載。

Result -> SimpleResult

これもMigration Guideに書いてあるけど、play.api.mvc.Resultはdeprecatedになった。

play2-auth関連のコードも修正が必要。具体的にはAuthConfigImpleの各メソッドのシグニチャーを変更すればOK。

Jackson

パッケージ名が変わってる。org.codehaus.jackson → com.fasterxml.jackson

その他(追記)

evolutionsが再実行されそうに

開発環境で起動したら、evolutionsでかなり昔まで戻ってから再実行されそうになった。例えば、現在の最新が50.sqlだとして、20.sqlまでDownが実行され、その後再度20〜50.sqlのUpが実行されそうになった。

原因は、20.sql を適用した後に、20.sql をいじった為だと思う。ただ、Play 2.1の時には、適用済みの古いスクリプトを修正してもそこまで巻き戻らなかったんだけど、Play 2.2で若干仕組みが変わったらしい。詳しくはこちらを参照。

対策として、新しいまっさらなDBを作ってそこでevolutionsを実行し、その後play_evolutionsテーブルから必要なエントリーを元のDBに移し替えること。

specs2関連

以前は以下のようなのがOKだったが、

listOfStrings must contain("A", "B") //A, Bが両方含まれていないとダメ
listOfStrings must not contain("C", "D") // C, Dのどっちかでも含まれていたらダメ

以下のように書き換えないとダメだった。specs2のバージョンは一緒なのに何でだろう。Scalaのバージョンが変わったからかな?

listOfStrings must contain(allOf("A", "B")) //A, Bが両方含まれていないとダメ
listOfStrings must not contain("C")
listOfStrings must not contain("D")

最後に

Play 2.0 → 2.1の時よりは楽だった気がする。あの時はJson周りとか結構変更になったし。

現状、コンパイル通っただけで、まだあんまりテストしてないので、何かあれば追記予定。

“Play! framework 2.1 → 2.2に上げた” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です