アプリについて
Strutsはもう時代遅れなのかなと感じ始め、じゃあ今Javaで作るWebアプリって何が良いのかな?と調べた結果、良いか悪いかは別として、Scalaでも作れるPlayframworkに興味を持ち。それからは勉強がてら、最低限CRUD機能+親テーブルと子テーブルのを兼ね備えていることを前提としてPlayframworkを勉強。
出来上がったアプリは、上記に併せてページング機能もあり、地味にめんどくさいロジックを組んでいるので、そこだけ我ながらの力作。
CSSはTwitterBoostrupを利用。とはいえ、今回は機能周りの勉強だったので、デザインは適当なんだけど。
DBについては、ローカルでは普段MySQLを使っているので、Heroku上ではClearDB(MySQLに似ているSaaSのDB)を使う。
実は、今はScalaでも同じものを作っていたりする。
HerokuのToolbelt
下記からHeroku Toolbeltをインストールしておく。
本当はHomebrewでインストールしたかったんだけど、上手く動かないので中止。
Herokuにログイン
さて、取りあえずディレクトリに移動。アプリ名は「crud_java」。(ちなみに作り途中のScala版は「crud_scala」だったりして)
$ pwd
crud_java/
下記のHerokuコマンドでログイン。
$ heroku login
Enter your Heroku credentials.
Email: メールアドレス
Password (typing will be hidden):
Authentication successful.
Herokuのアプリケーション作成
下記コマンドでアプリケーションを作成する。$ heroku create
Creating glacial-scrubland-3010... done, stack is cedar
http://glacial-scrubland-3010.herokuapp.com/ | git@heroku.com:glacial-scrubland-3010.git
Herokuにログインすると、今作成したアプリが見れる。
Herokuのアプリケーションをリネーム
「アプリを選択 > Settings > Name」で名前を変更。
(「glacial-scrubland-3010」→「playframwork-crud-java」と変更)
ローカルのgit設定も変更。
$ heroku rename playframwork-crud-java
Renaming playframwork-crud-java to playframwork-crud-java... done
http://playframwork-crud-java.herokuapp.com/ | git@heroku.com:playframwork-crud-java.git
Git remote heroku updated
一応両方やってみたけど、ローカルからの変更だけで良いっぽい?
ClearDBをインストール
下記コマンドでインストール。らくちん。$ heroku addons:add cleardb
Adding cleardb on playframwork-crud-java... done, v3 (free)
Use `heroku addons:docs cleardb` to view documentation.
こんな感じ。
ClearDBのエンドポイントを確認
下記コマンドでエンドポイントを確認。※{パスワード}の所はマスキング
$ heroku config | grep CLEARDB_DATABASE_URL
CLEARDB_DATABASE_URL: mysql://b1ecc59f0e6fb8:{パスワード}@us-cdbr-east-05.cleardb.net/heroku_c6bbbbd45a76b45?reconnect=true
ついでに、これらの情報を元にSequel Proとかでログインし、DatabaseやTableを作成しておく。
PlayのConfigを設定
conf/application.confのDB設定の所を、上記「ClearDBのエンドポイントを確認」で確認した内容を
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://us-cdbr-east-05.cleardb.net:3306/heroku_c6bbbbd45a76b45?characterEncoding=UTF8"
db.default.user=b1ecc59f0e6fb8
db.default.password="{パスワード}"
db.default.partitionCount=1
db.default.maxConnectionsPerPartition=5
db.default.minConnectionsPerPartition=5
下の3行は、ClearDBの無料版を利用する際に必要な設定。
参考
一言多いプログラマーの独り言 ー Herokuで、Java Play framework 2.0 + cleardb を利用すると c.j.b.h.AbstractConnectionHook のエラー
Procfile作成
プロジェクトのルートディレクトリに、Herokuで使う為の「Procfile」と言う物を作成。
【Procfile】
web: target/start -Dhttp.port=${PORT} ${JAVA_OPTS} -DapplyEvolutions.default=true
Herokuへデプロイ
下記コマンドでデプロイを実行。$ git push heroku master
アプリケーション稼働
下記コマンドを実行すると、ブラウザが起動して勝手にアプリケーションを開いてくれる。
$ heroku open
前はこれで出来たんだけど、変なエラーが...。
$ heroku logs
2014-02-02T06:40:24.702110+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=playframwork-crud-java.herokuapp.com request_id=27b4f1e1-e61d-4c3a-b3b2-15a0dfcacda3 fwd="122.17.154.11" dyno= connect= service= status=503 bytes=
ログを見ても的を射ない。
今日は諦めて、ディアブロしよーっとww