play2.1/scala2.10 のプロジェクトを play2.3/scala2.11 に変更した

いろいろ大変だった……

api が変わってる

sbt-web

The largest new feature for Play 2.3 is the introduction of sbt-web!!

  • 基本 Migration23 のやり方でいいんだけど……
  • The Closure Compiler has been replaced. ← これが死ねる。
  • bootstrap 2.2.2 の less がコンパイルできなくなってる → bootstrap 2.3.2 にした → jquery のバージョンが上がって htmlunit 死亡 → phantomjs でテストするように変更
  • sbt-rjs(requirejs) は勝手にwebjarsを使ってくれない => RjsKeys.mainConfig := "requirejs.conf" にして app/assets/javascripts/requirejs.conf.js に requirejs.conf({ paths: "jquery": "jquery/jquery"}) みたいなのを書く…
    • 当然devモードで使うときもその requirejs.conf.js を読み込んでから requirejs を読み込む
    • def requireJsLoad(main: String): Html = Html(s"""""")
    • org.webjars.play.RequireJS.setup がよく似た事してて、たぶん将来的には手動でconf設定しなくても自動でできるようになると思われるが、今は無理
    • 参考にした sbt-web/sbt-rjs を使ってるプロジェクト https://github.com/satoshi-m8a/play_eccube_api

なんとなく sbt-web/webjars/sbt-rjs は鬼門…… https://github.com/tuplejump/play-yeoman (sbt から外部プロセスとして node/yo/bower/grunt とか呼ぶ sbt プラグイン) か普通に bower/grunt 使ってjavascript界のやり方でライブラリ管理・アセットコンパイルやった方がいいんじゃないだろうか……

dist でできる成果物が違う

これが原因でデプロイスクリプトが死んだ

  • 出力位置が dist じゃなくて target/universal
  • start スクリプトがなくなって bin/プロジェクト名 みたいなのができてる。中身はactivatorの起動スクリプト
  • jar が project_2.10-x.x.x.jar から project.project-x.x.x.jar と project.project-1.0-assets.jar に変更された(assets が別jarに)
    • Build.scala の書き方によって conf がjarに含まれる場合と含まれない場合がある? 調査中……
  • RUNNNING_PID のできる位置がシンボリックリンクなどを解決した先になった → -Dpidfile.path=${BASE}/RUNNING_PID のように自分で設定する
  • javaオプションを勝手に設定してくれる → -Xms1024m なので t1.micro で二つ立てると死ぬ → -J-Xms5m とか自分で設定すると初期値設定が消える
  • psコマンドで見たら恐ろしいことになってるのは相変わらず…
  • start が消えるのと RUNNING_PID がシンボリックリンクたどるのを解決 https://gist.github.com/nazoking/78d05bb9a5674ef687f3