Keep on moving

あんまりまとまってないことを書きますよ

[Scala][Play!framework][IntelliJ]Scala+Play! frameworkの環境を作る(v1.2.3対応)


Play! 1.2.2+Scala でIntelliJの環境を以前作りましたが、
1.2.3の環境では、コントローラのエラーがでて、IntelliJからの実行が
できなくなりました。ターミナルで作業すれば問題ないんですが、
IDEから作業できたほうが開発するときには便利なので、調査してみました。

原因

”play idealize”したときにmoduleのパス設定が正しく設定されないのが原因です。

対策

[Project Structure]=>[PlayFramework Dependecies] => [Project Libraries]
が設定が正しくない場合赤く印が付くのでこれをきちんとしたパスに
手動でなおしてやります。
f:id:Ehren:20110920013751p:image:w640

パスをきちんと設定すると "play run"相当の動作をするようになります。

まとめ

まだまだPlay!での IntelliJ対応ははまりどころがありますね。
でもScalaを書くときには便利なので、少しづつ慣れていきたいと思います。

先人に感謝します。

cloudbeesにPlay!+Scalaアプリをデプロイする

Play!+Scalaの公開先が欲しくなってきたので公開先を探してみました。
某Gから始まる検索エンジンで検索したところ、ちょうどPlay!に対応したサービスを発見した。
CloudBees RUN@cloud Documentationを見たところ、対応しているframeworkにPlay!があった!!
ちなみに、cloudbeesはstaxを買収したらしい。

まとめ

コマンド一発でデプロイできるのは楽ですね。
Java PaaS の比較によると、CloudBeesはGAEと同じで、
アプリケーションが長時間非アクティブだと、リソースを確保するために JVM をメモリーからスワップアウトするらしいですね。
パフォーマンスが欲しければ、お金を払うようにすればいいみたい。
まぁ今のところ、そんなにパフォーマンスが必要なわけではないのでokですかね。

Jenkins+Play! framework + Scalaの環境を作成

Scala勉強用にPlay! + Scalaでちょろっとした自分用のサービスを組み立てています。
ついでにCIの勉強もかねてJenkinsの環境を作成してみました。

継続的インテグレーション入門 開発プロセスを自動化する47の作法

継続的インテグレーション入門 開発プロセスを自動化する47の作法

導入したJenkins プラグイン

  • Git plugin
    • GitHubからソースを取得するので
  • Jenkins Cobertura Plugin
  • playframework-plugin
    • play! framework用のテスト結果を表示するプラグイン

設定内容

Jenkins全体の設定
  1. gitのpath
  2. playのpath(playコマンドのpath /path/to/play の形式で設定)

プロジェクトごとの設定

  1. gitレポジトリの登録
    1. httpsでok(https://github.com/masahitojp/play_scala_helloworld.git etc)
  2. playのコマンド登録
    1. 登録→"dependencies --sync","auto-test"
    2. "dependencies --sync"で依存関係を解決してからテストすること、やらないとauto-testの実行ができない場合がある
  3. 「Cobertura カバレッジ・レポートの集計」を設定
    1. "test-result/code-coverage/coverage.xml "
  4. 「Play! auto-test reports」にチェックを入れる

実際のテスト結果

f:id:Ehren:20110817004849p:image:w640

まとめ

今までまともにCIを使っていませんでしたが、きちんと設定しておくだけでビルド+TESTを
行なってくれるのは精神的に楽ですね。
今後アプリを作りながら少しづつ経験値を積んでいきたいところです。

Scala+Play! frameworkの環境を作る

Scalaの初心者なので、環境をつくるエントリーをまとめておく.

scalaの導入

scala本家からダウンロードしてPATHを通す。
Play! Scalaモジュールは2.8.Xが対照なのでこちらを入れておくこと。

export SCALA_HOME=/path/to/scala
export PATH=$SCALA_HOME/bin:$PATH

play! frameworkの導入

play! frameworkをダウンロードして、PATHを通しておく

export PLAY_HOME=/path/to/play
export PATH=$PLAY_HOME:$PATH

play! scalaプラグインを導入

$ play install scala
$ play new helloworld --with scala
<||

** IntelliJ用にプロジェクトを変換

>||
$ play idealize helloworld/
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.2, http://www.playframework.org
~
~ OK, the application is ready for Intellij Idea
~ Use File/New Module/Import Existing module
~

一度実行して、ちゃんと画面が表示されることを確認しておく。
$ play run

画面に出たとおりに、IntellijでModuleとしてImportする。
IntelliJから新規にプロジェクトを作成して、Moduleを追加すること。
f:id:Ehren:20110810234631p:image:w640

File/Project Structreで設定

以下のように設定する。

temp/generated フォルダを追加する。
f:id:Ehren:20110811001617p:image:w640

compiler libralyでScala-compiler-2.8.Xを選択する。(これはIntelliJでScalaを始めて起動するときに設定します)
f:id:Ehren:20110811002821p:image:w640

ModuleのDependenciesでscala-liblaryを追加する。
f:id:Ehren:20110811002131p:image:w640

Run/Edit Configurations

IntelliJから Run/Edit Configurations で以下のように設定する。

f:id:Ehren:20110811002822p:image:w640

Main class:
play.server.Server

VM parameter
-Dapplication.path="/home/test/codes/scala/helloworld"

Use classpath and JDK of Modules:
上で作成したModuleを選択

ここまで設定すれば、Run/Debugともに実行可能になります。
Debugだとステップ実行もできます。

TESTも出きるようにする

"Project"-"dependencies"に"PLAY_HOME/modules/testrunner/lib/play-testrunner.jar" を設定する。
f:id:Ehren:20110811002823p:image:w640

これでRun/DebugするとTEST modeで起動され、http://localhost:9000/@test が表示できるようになり、テストを走らせることができます。

もう少し調べたい

  • Jenkinsからのテスト
  • テンプレートの補完など

まとめ

プロジェクト作成=>IDEで開発=>実行=>テスト実行まで行うことができました。
Play!flameworkは他のScala が使えるWAFに比べると日本語の情報が助かりました。
これでバリバリアプリが開発できそうです。
先人に感謝