herokuでPlay!に挑戦 その1- おおざっぱ
2014/08/17
heroku
mybatis
osx
Play!
postgresql
scala
コンピューターが逝ってしまって、ようやく開発環境が復活。
また、いろいろやっていきたいなと思い始めた夏なのでした。
herokuとか、scalaとか、Play!フレームワークとか、いままで、触ったことがないものに挑戦ということでいろいろやってみました。
DB周りで無駄にはまってしまったのでとりあえず、メモ。
参考:
Play!は、2.3.3で現在の最新を使用。
開発環境はeclipse。
Play!自体は、typesafeのactivatorをhomebrewでインストール。
はじめ、どうインストールしていいのか、わからず(調べたらいろいろでてきて迷った)
macportsで入れようとして、パッケージが古かったり、パッケージャーを使わない方法もあったりと、試行錯誤。
activatorを起動すると、ブラウザベースの設定画面がでてきたりと、この辺もまったくなれずとまどった。
何度か、seedsからプロジェクト作っては壊しを繰り返して、慣れた。
この辺で、herokuでアカウントを作成して、開発機(macosx)のssh、gitあたりの設定をする。pushしてデプロイでherokuで動くことを確認。
なんとか起動までできたので、そこから、生成されるファイル構成をざっくりながめ、頭くらくらしつつ、DB周りの設定にとりかかったのだけど、調べて、しっくりこなかったので、MyBatisを使うことに決定。DBはpostgresqlを使うことにした。
スキーマを定義しないやり方って、はじめはいいかなーと思ったけど、フレームワークやツールが何しているのかわからないとはまりそうなのと、不満もつと嫌いになりそうなのと、生のSQLが近くにあったほうがいいかなとの判断。単純なCRUD書くのは面倒だと思うけど。
DB周りって、接続情報をどう設定から取得するのとか、まあ、面倒。
生のコネクションの作り方は、herokuのドキュメントにあった。
MyBatisはちょっと工夫が必要だった。専用の設定ファイルを使用する系は、頭ひねる必要があった。
ここで、今回用意した設定ファイル。
build.sbt
application.confのDB設定
ここで注意、どうもmybatisさんにパラメータを渡す場合、urlからユーザとパスワードを切り出さないといけないようなので、今回とった方法は、herokuの環境変数にDATABASE_HOST,DATABASE_USER,DATABASE_PASSWORDを設定するやり方。
いずれにしろコードで、SqlSessionFactoryを生成しないといけないので、DATABASE_URLから切り出す方法がいいと思う.....
mybatisのconfiguration.xmlの場所は以下。
application.confには、
osx上での、PostgreSQL関連は、簡単そうだったので、単体のappで提供されているものを使いました。ただ、これだとpsqlのパスがちょい面倒
GUIに慣れてるので、heroku側のDBを触るときは、pgAdmin使ったけど、共用のDBを目視でさがすのはいささか苦痛。
とりあえず、何を参考にしてはまったかはメモ。
ほんとは、もっとこまかい無数のことに足をすくわれたのだけど。
レッドブルの消費は、5缶。
また、いろいろやっていきたいなと思い始めた夏なのでした。
herokuとか、scalaとか、Play!フレームワークとか、いままで、触ったことがないものに挑戦ということでいろいろやってみました。
DB周りで無駄にはまってしまったのでとりあえず、メモ。
参考:
Play!は、2.3.3で現在の最新を使用。
開発環境はeclipse。
Play!自体は、typesafeのactivatorをhomebrewでインストール。
はじめ、どうインストールしていいのか、わからず(調べたらいろいろでてきて迷った)
macportsで入れようとして、パッケージが古かったり、パッケージャーを使わない方法もあったりと、試行錯誤。
activatorを起動すると、ブラウザベースの設定画面がでてきたりと、この辺もまったくなれずとまどった。
何度か、seedsからプロジェクト作っては壊しを繰り返して、慣れた。
この辺で、herokuでアカウントを作成して、開発機(macosx)のssh、gitあたりの設定をする。pushしてデプロイでherokuで動くことを確認。
なんとか起動までできたので、そこから、生成されるファイル構成をざっくりながめ、頭くらくらしつつ、DB周りの設定にとりかかったのだけど、調べて、しっくりこなかったので、MyBatisを使うことに決定。DBはpostgresqlを使うことにした。
スキーマを定義しないやり方って、はじめはいいかなーと思ったけど、フレームワークやツールが何しているのかわからないとはまりそうなのと、不満もつと嫌いになりそうなのと、生のSQLが近くにあったほうがいいかなとの判断。単純なCRUD書くのは面倒だと思うけど。
DB周りって、接続情報をどう設定から取得するのとか、まあ、面倒。
生のコネクションの作り方は、herokuのドキュメントにあった。
MyBatisはちょっと工夫が必要だった。専用の設定ファイルを使用する系は、頭ひねる必要があった。
ここで、今回用意した設定ファイル。
build.sbt
libraryDependencies ++= Seq(
"org.postgresql" % "postgresql" % "9.3-1102-jdbc41",
"org.mybatis" % "mybatis" % "3.2.7",
javaJdbc,
javaEbean,
cache,
javaWs
)
application.confのDB設定
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/herok1"
#db.default.url=${?DATABASE_URL}
db.default.url=${?DATABASE_HOST}
db.default.user=oreore
db.default.user=${?DATABASE_USER}
db.default.password=""
db.default.password=${?DATABASE_PASSWORD}
ここで注意、どうもmybatisさんにパラメータを渡す場合、urlからユーザとパスワードを切り出さないといけないようなので、今回とった方法は、herokuの環境変数にDATABASE_HOST,DATABASE_USER,DATABASE_PASSWORDを設定するやり方。
いずれにしろコードで、SqlSessionFactoryを生成しないといけないので、DATABASE_URLから切り出す方法がいいと思う.....
mybatisのconfiguration.xmlの場所は以下。
application.confには、
mybatis.configuration=mybatis/configuration.xmlと設定
osx上での、PostgreSQL関連は、簡単そうだったので、単体のappで提供されているものを使いました。ただ、これだとpsqlのパスがちょい面倒
GUIに慣れてるので、heroku側のDBを触るときは、pgAdmin使ったけど、共用のDBを目視でさがすのはいささか苦痛。
とりあえず、何を参考にしてはまったかはメモ。
ほんとは、もっとこまかい無数のことに足をすくわれたのだけど。
レッドブルの消費は、5缶。
: