LoginSignup
11
8

More than 5 years have passed since last update.

ScalaでPlayのプロジェクト作ってHerokuで動かす

Last updated at Posted at 2014-12-30

※Scala/Play歴は数日なので色々間違ってると思います。気づいた点があったら教えてください

作ったファイル
https://github.com/saito400/play-scala-demo

参考にしたページ

環境

アプリ バージョン
Mac OSX Yosemite
Typesafe Activator 1.2.12
Play 2.3.7
Slick 2.1.0

準備

Herokuのアカウント作成

以下からサインアップする。

Heroku Toolbeltのインストール

以下からダウンロードしインストールする。

Typesafe Activator をダウンロード

以下からダウンロードする。

パスを通す

export PATH=$PATH:/relativePath/to/activator

実装

playのプロジェクトを作成

$ activator new play-scala-demo play-scala

$ cd play-scala-demo

activatorを起動


$ activator

eclipseを使う場合はeclipseプロジェクトとして取り込めるよう変換

[play-scala-demo] $ eclipse

IDEAを使う場合

※以下は不要か?
```
[play-scala-demo] $ idea


起動できるかテスト


[play-scala-demo] $ start
```

上記にアクセスし成功してれば「Your new application is ready.」と表示される

必要なライブラリの読み込み

build.sbtを修正し、必要なライブラリを追加する。
今回作成したbuild.sbtの内容は以下

name := """play-scala-demo"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
  jdbc,
  cache,
  ws,
  "com.typesafe.slick" %% "slick" % "2.1.0",
  "com.typesafe.slick" %% "slick-codegen" % "2.1.0",
  "com.typesafe.play" %% "play-slick" % "0.8.0",
  "org.slf4j" % "slf4j-nop" % "1.6.4",
  "org.postgresql"  %  "postgresql"  %  "9.3-1102-jdbc41"
)

※anormは削除した。

build.sbt修正後以下のコマンドでライブラリをロードする

$ activator update 

eclipseを使う場合はeclipseプロジェクトとして取り込めるよう変換

$ activator eclipse

ローカルmacにpostgresqlをインストール&テーブル作成

$ brew install postgresql

$ postgres -D /usr/local/var/postgres &

$ psql postgres;

postgres=# CREATE DATABASE playdb;

postgres=# ¥q

application.conf設定

conf/application.confに以下を追加


db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/playdb"


slick.default="models.*"

Slick用のコードを自動生成

Slick用のコードをテーブルからGenerateする為、以下のファイルを作って実行する
※今回はapp/models以下に出力されるよう設定した


package tools



import scala.slick.codegen.SourceCodeGenerator

object Generator {

  def main(args: Array[String]): Unit = {

    println("start")

    val slickDriver = "scala.slick.driver.PostgresDriver"
    val jdbcDriver = "org.postgresql.Driver"
    val url = "jdbc:postgresql://localhost/playdb"
    val outputFolder = "app/"
    val pkg = "models"

    SourceCodeGenerator.main(
      Array(
        slickDriver,
        jdbcDriver,
        url,
        outputFolder,
        pkg))

    println("end")

  }
}


conf/application.confに以下の記述を追加する

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/playdb"
slick.default="models.*"
applyEvolutions.default=true

Procfileを作成し、以下の内容を記載。
※play-scala-demoをアプリケーション名に変更する

web: target/universal/stage/bin/play-scala-demo -Dhttp.port=${PORT} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}

Evolutions(Railsのマイグレーションみたいなもの?)用のファイルを作成。

-DapplyEvolutions.default=true に設定してこのファイルを作成するとactivator start時に自動でSQLを実行してテーブルを作成してくれる。

conf/evolutions/default/1.sql

CREATE TABLE feeds (
    id     serial,
    name    varchar(100),
    url    varchar(500)

); 

コントローラとviewを修正

色々修正しているので以下を参照ください。

基本的には以下のソースを修正すれば良いと思います。
/app/controllers/以下
/app/views/以下
/conf/routes

ローカルで動作確認

以下のコマンドを実行するとサーバが起動する。

$ activator run

Heroku側のDB設定

$ heroku addons:add heroku-postgresql --app app_name

確認

$ heroku addons

$ heroku config

Herokuにデプロイ

$ git init 

$ git remote add origin YOUR_REPOSITORY

$ git add . -A && git commit -m "initial"

$ git push --set-upstream origin master

$ heroku login

$ heroku create

$ git push heroku master

$ heroku open

ブラウザが立ち上がるので、正常に動作してるか確認。

エラーが出てたら$ heroku logsでログを確認する

11
8
0

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
11
8