この記事は「Scala Advent Calendar 2014」の8日目の記事になります。
少々推敲できていませんが、お気づきの点があればコメントなどいただけると嬉しいです・・・。
概要
Scalaを利用して個人的に開発効率の高そうな組み合わせ(個人的な好み含む)の骨組みの作り方を記述します。
ごく一般的なWebアプリケーションを作成する際に利用できるかと。
はじめに
事前に以下のものがインストールされ、パスが通っていること。
- Typesafe Activator
- git(herokuを利用する場合)
- heroku toolbelt (herokuを利用する場合)
テンプレート作成
Activator UI の起動
※ 以下Windows想定ですが、Linux、Macでもほぼ同じように実行できるかと思います。
以下を実行し、activator uiを起動する
activator ui
Playのプロジェクトを作成する
Play Scala Seed
を選択し、保存先を選択し、create
を押下しプロジェクトを作成する。
だーっとログが流れますのでじっと待ちましょう。。。
画面が遷移したらプロジェクト作成完了です。
ScalikeJDBC の依存関係を追加する
build.sbtに以下を追加する
"org.scalikejdbc" %% "scalikejdbc" % "2.2.0",
"org.scalikejdbc" %% "scalikejdbc-play-plugin" % "2.3.4",
"org.scalikejdbc" %% "scalikejdbc-play-fixture-plugin" % "2.3.4", // optional
"com.h2database" % "h2" % "1.4.182"
Flyway の依存関係を追加する
build.sbtに以下を追加する。
"com.github.tototoshi" %% "play-flyway" % "1.1.3"
Scala-Logging の依存関係を追加する。
build.sbtに以下を追加する。
"com.typesafe.scala-logging" %% "scala-logging" % "3.1.0",
"org.slf4j" % "slf4j-api" % "1.7.7",
"ch.qos.logback" % "logback-classic" % "1.1.2"
PostgreSQL の依存関係を追加する
build.sbtに以下を追加する
"org.postgresql" % "postgresql" % "9.3-1102-jdbc41"
ここまで追加したbuild.sbtは以下の様なイメージになります
(snip)
libraryDependencies ++= Seq(
jdbc,
anorm,
cache,
ws
)
libraryDependencies ++= (Seq(
"org.postgresql" % "postgresql" % "9.3-1102-jdbc41"
) ++ Seq( // scalikeJDBC
"org.scalikejdbc" %% "scalikejdbc" % "2.2.0",
"org.scalikejdbc" %% "scalikejdbc-play-plugin" % "2.3.4",
"org.scalikejdbc" %% "scalikejdbc-play-fixture-plugin" % "2.3.4", // optional
"com.h2database" % "h2" % "1.4.182"
) ++ Seq( // flyway
"com.github.tototoshi" %% "play-flyway" % "1.1.2"
) ++ Seq( // scala-logging
"com.typesafe.scala-logging" %% "scala-logging" % "3.1.0",
"org.slf4j" % "slf4j-api" % "1.7.7",
"ch.qos.logback" % "logback-classic" % "1.1.2"
))
application.confの修正
アプリケーションのlangの変更
application.langs="en"
↓
application.langs="ja"
開発時はh2dbを利用するための設定
db.default.driver=org.h2.Driver # DEV
db.default.url="jdbc:h2:mem:play;MODE=PostgreSQL;DB_CLOSE_DELAY=-1" # DEV
db.default.user="" # DEV
db.default.password="" # DEV
db.default.user=${?DB_USER}
db.default.password=${?DB_PASS}
evolution pluginの無効化
evolutionplugin=disabled
標準のdbpluginの無効化
dbplugin=disabled
Flywayのmigration設定
db.default.migration.validateOnMigrate=false // true by default
db.default.migration.initOnMigrate=true
db.default.migration.auto=true
flywayのマイグレーション用sqlファイルの配置
/conf/db/migration/default 配下にsqlファイルを配置する。
例)V0.0.1__first_create.sql のようなファイルを配置
-- members
create table members (
id serial not null primary key,
name varchar(64),
created_at timestamp not null
);
play.pluginsの作成
ファイル内は以下のように記述します
1000:com.github.tototoshi.play2.flyway.Plugin
10500:scalikejdbc.PlayPlugin
11000:scalikejdbc.PlayFixturePlugin
アプリケーションをgitにコミットする
git init
git add .
git commit -m "init"
Heroku 上で新規アプリケーションを作成する
heroku create {appname}
Heroku 上へpushする
git push heroku master
アプリケーションへアクセスする
以下のURLでアクセスする
https://{appname}.herokuapp.com/
おめでとうございます。
表示できましたね!!!
おまけ
eclispeのプロジェクトとして認識させる
プロジェクトのディレクトリにコマンドプロンプトで移動し、以下のコマンドを実行する。
activator.bat
> eclipse with-source=true