argius note

プログラミング関連

Play!2.0始めました(2)

前回からの「それから」について、書きます。
今回からは、2012-06-26にリリースされた、バージョン2.0.2を使っています。

  • バージョン2.0.2について
  • proxy越えが必要な環境で使用する
  • distされたモジュールをWindows上で動作させる
  • application.context(SUB-URIのprefixオプション)

環境:

バージョン2.0.2について

以下のページでアナウンスされています。

直接確認できた変更点は以下のとおりです。

  • 対IDEの改善
    • クラスフォルダー(target/scala-2.9.1/classes_managed)でなくソースフォルダー(target/scala-2.9.1/src_managed/main)が設定されるようになった=refresh問題が解消された
    • EclipseのScalaバージョン不一致に因るコンパイル警告が出なくなった
    • eclipsifyによるビルドパス設定(.classpath)出力の改善
  • sbtが0.11.3に

2.0.1から2.0.2へのバージョンアップは、既存のrepositoryを活かすために、上書きインストールにしました。
問題がある場合はクリーンインストールにすれば良いでしょう。

proxy越えが必要な環境で使用する

Javaオプションをsbtに直接指定します。

(例)
-Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080

どこに指定するかといいますと...${PLAY_HOME}/framework/buildの、sbt起動時のオプションで指定します。


distされたモジュールをWindows上で動作させる

distされたzipには、shの起動スクリプトしか付属していません。


Windows用の起動スクリプトを作ってみました。
以下のbatファイルを作って、zipを展開したフォルダにコピーして実行します。

  • playstart.bat
@echo off
start java %* -cp "./lib/*;" play.core.server.NettyServer .

※Java6から使えるようになったCLASSPATHワイルドカードの箇所は、セミコロンをつけないと上手く動作しませんでした。Cygwinの場合も同様です。

  • playstop.bat
@echo off

if exist RUNNING_PID GOTO L1
echo Play app not started yet.
goto END

:L1
for /F "usebackq" %%z in (`more RUNNING_PID`) do (
set PID=%%z
goto :L2
)

:L2
taskkill /PID %PID%
if not errorlevel 1 goto L3
echo failed to kill process PID %PID%.
echo trying to kill process forcely ...
taskkill /PID %PID% /F
if not errorlevel 1 goto L3
echo failed to kill process forcely!
goto END

:L3
if not exist RUNNING_PID GOTO L4
del RUNNING_PID

:L4
echo Done.

:END

application.context

前回、"SUB-URIのprefixオプション"という項目で触れた件です。
githubのmasterブランチには、application.contextがサポートされたバージョンが登録されています。
詳細は、別エントリにまとめました。


次回は、asynchronousとか自動デプロイあたりをやってみたいと思います。