LoginSignup
25
24

More than 5 years have passed since last update.

Scala + PlayFramework + ScalikeJDBC + Flyway + (Scala-logging) on Heroku + PostgreSQL

Last updated at Posted at 2014-12-10

この記事は「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
25
24
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
24