Heroku で Play! をためしてみる

今回は Heroku で Play! を動かすところまでやってみる。

以下を参考にやってみる。以下は scala でためしてるけど今回は素(?)でやる。

Play! のインストール

適当な場所に解凍すればよいみたい。それと play コマンドにパスを通す。
最新版の 1.2.3 を使用した。

$ wget http://download.playframework.org/releases/play-1.2.3.zip
$ unzip play-1.2.3.zip && mv play-1.2.3 ~/Library/Java/
$ sudo ln -s ~/Library/Java/play-1.2.3/play /usr/local/bin/play
$ play
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.3, http://www.playframework.org
~
~ Usage: play cmd [app_path] [--options]
~ 
~ with,  new      Create a new application
~        run      Run the application in the current shell
~        help     Show play help
~

起動確認OK。

Play! プロジェクトの作成

以下のコマンドで作成。ラクチン。

$ play new heroku_play
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.3, http://www.playframework.org
~
~ The new application will be created in /users/daicham/Work/heroku_play
~ What is the application name? [heroku_play] 
~
~ OK, the application is created.
~ Start it with : play run heroku_play
~ Have fun!
~

以下のようなファイルが生成された。Rails そっくり。

$ tree -a heroku_play/ 
heroku_play/
├── app
│   ├── controllers
│   │   └── Application.java
│   ├── models
│   └── views
│       ├── Application
│       │   └── index.html
│       ├── errors
│       │   ├── 404.html
│       │   └── 500.html
│       └── main.html
├── conf
│   ├── application.conf
│   ├── dependencies.yml
│   ├── messages
│   └── routes
├── lib
├── public
│   ├── images
│   │   └── favicon.png
│   ├── javascripts
│   │   └── jquery-1.5.2.min.js
│   └── stylesheets
│       └── main.css
└── test
    ├── Application.test.html
    ├── ApplicationTest.java
    ├── BasicTest.java
    └── data.yml

Play! を動かしてみる

そのまま Play! を起動してみる。

$ cd heroku_play
$ play run
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.3, http://www.playframework.org
~
~ Ctrl+C to stop
~ 
Listening for transport dt_socket at address: 8000
18:15:29,026 INFO  ~ Starting /heroku_play
18:15:29,962 WARN  ~ You're running Play! in DEV mode
18:15:30,109 INFO  ~ Listening for HTTP on port 9000 (Waiting a first request to start) ...
Debugger failed to attach: handshake failed - connection prematurally closed
18:16:08,016 INFO  ~ Application 'heroku_play' is now started !
Debugger failed to attach: handshake failed - connection prematurally closed

http://localhost:9090 にアクセスしてWelcomeページが表示されたのを確認。
どうやらデフォルトは開発モード(DEV mode)らしい。このへんも Rails に似てる。
んー、Debugger failed とでているがよくわからなかったので今回はスルーする。

heroku へデプロイ

これまでどおり、Git にコミットして、heroku の cedar を作成して push する。
.gitignore には以下を追加した。Play!のチュートリアルに書いてあった。

/tmp
/modules
/lib
/test-result
/logs

で、 heroku open で確認してみると、"Your application is ready!" とだけ表示された。ウェルカムページがでないなぁ。
heroku logs でログを確認。すると以下のように起動しているっぽい。

Starting process with command `play run --http.port=49805 --%prod -Dprecompiled=true`

"--%prod" はproduction環境を意味しているのか。そういえば Procfile 作ってないけど動いてるなぁ。まぁいいか。
ローカルでもこのオプションをつけて起動してたら同じメッセージになった。
手順がまずかったわけではないのね。とりあえずそういう挙動をするということにしておく。

まとめ

  • Play! はインストールもプロジェクト作成も実行も簡単。イイカンジ。
  • heroku へのデプロイはもういい加減なれてきた。

というわけで、ためすほどの内容ではなかったけど一応 heroku で動いた。
Play! 楽しそうなので今度は Play! のチュートリアルをやってみるかな。

    • -

追記
Getting Started with Play! on Heroku | Heroku Dev Center によると Procfile は準備するように書いてあるのでホントはあったほうがよさそう。