Locked History Actions

Play/Prepare

Scala+IntelliJで使うための準備

参考

インストール

以下は2011/5現在のもの。

  • 当然ながらJREが必要
  • Scalaはあらかじめインストールされていなくてもよい(らしい)。私は2.8.1.をインストール済。
  • http://www.playframework.org/からplay-1.2.1をダウンロードして適当に展開。

  • 展開したディレクトリをPATHに含める
  • DOS窓で「play install scala」と入力すると、勝手にscala用moduleをダウンロードしてインストールされる。

※2011/10/9現在、これをやると「Cannot fetch the modules list from http://www.playframework.org/modules ...」というエラーになってしまう。

C:\****\play-1.2>play install scala
~        _            _
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/
~
~ play! 1.2, http://www.playframework.org
~
~ Will install scala-0.9
~ This module is compatible with: 1.2
~ Do you want to install this version (y/n)? y
~ Installing module scala-0.9...
~
~ Fetching http://www.playframework.org/modules/scala-0.9.zip
~ [--------------------------100%-------------------------] 28116.7 KiB/s
~ Unzipping...
~
~ Module scala-0.9 is installed!
~ You can now use it by add adding this line to application.conf file:
~
~ module.scala=${play.path}/modules/scala-0.9
~

C:\****\play-1.2>

アプリケーションの作成と実行

play new myApp --with scala

などとする。myApp部分は「新しく作成するディレクトリのパス」なので、上のようにすると「カレントディレクトリ」の下に作成されてしまうことに注意する。 既にmyAppというファイルやディレクトリがあれば何もしない。

play run myApp

で実行する。このときポート9000番を使用するので、ブラウザではこのポートを指定する

IntelliJ IDEAで編集できるようにする

IntelliJ対応にする

まず、playが作成したアプリケーションについて

play idealize myApp

とする。これはアプリケーションディレクトリ内にIntelliJ IDEA用の*.imlというファイルを作成するだけらしい。 こうしておいて、IntelliJ IDEAにてインポート操作をする(File/New ModuleでImport existing module)と、IntelliJ IDEAで扱えるようになる。

※マニュアルに注意書きがあるが、チームで開発する場合はこのimlファイルをコミットしてはいけないとある。 なぜなら、imlファイル中にはplayのインストール位置を相対パスで指定されているから。

ディレクトリを設定する

IntelliJのFile/Project Structureメニューを選択し、Modulesをクリックし、Sources, Test Sources, Excludedを設定する。Sources, Testは既に設定されているかもしれない。この場合Excludedだけでよい。

ライブラリを設定する

IntelliJのFile/Project Structureメニューを選択し、Librariesをクリックし、ライブラリとソースを設定する。 ライブラリには「名称」を指定できるらしいので、playはplay、play-scalaはplay-scalaという名前で参照してみる。

playのライブラリはplay-1.2.1/framework/play-1.2.1.jar。srcはplay-1.2.1/framework/src。 play-scalaのライブラリは、play-1.2.1/modules/scala-0.9/libの中のもの、ソースはplay-1.2.1/modules/scala-0.9/src。

これらのライブラリ設定は.idea/libraries/*.xmlに格納されるが、やはりこれもライブラリの位置を相対パスで指定している。チーム開発の場合は、プロジェクトと参照ライブラリの位置を決めておいた方が簡単かも。

コントローラのソースについて

この状態で、デフォルトで作成されるコントローラのソースを見てみると

package controllers

import play._
import play.mvc._

object Application extends Controller {
    
    def index = Template
    
}

Templateが赤で表示され、なぜかNot Found状態であることがわかる。 「import play.mvc.results._」を追加する。 ※この自動生成コードはplay-scala 0.9であることに注意。0.9.1では全く異なるコードになる。

なお、http://groups.google.com/group/play-framework/browse_thread/thread/df0c8837138b9515に、現在のIntelliJはpackage objectsを認識できないのでTemplateが見つからない、といった記述があるのだが、これは解消したということだろうか。。。?

実行と編集

あとは普通にplay run myApp等として実行させる(intelliJ内部で実行させる方法は不明)。 intelliJ上で編集を行えば、ただちに実行中のplayアプリケーションに反映される。