Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

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

参考にしたページ

https://www.playframework.com/documentation/ja/2.3.x/Home

http://slick.typesafe.com/doc/2.1.0/gettingstarted.html#adding-slick-to-your-project

http://codezine.jp/article/detail/7816

http://qiita.com/kukita/items/6326f1439abec013a479#3-13

http://tototoshi.hatenablog.com/entry/2014/10/09/205728

https://github.com/slick/slick-codegen-example

https://github.com/playframework/play-slick/tree/master/samples

http://www.atmarkit.co.jp/ait/articles/1401/22/news019_3.html

https://www.playframework.com/documentation/ja/2.3.x/ProductionHeroku

http://slick.typesafe.com/doc/2.1.0/code-generation.html

http://qiita.com/tsumekoara/items/f17b8f9b9cc7a1e59ab4?utm_content=buffercdbd7&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer#procfile

https://github.com/bizreach/play2-hands-on

環境

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

準備

Herokuのアカウント作成

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

https://www.heroku.com/

Heroku Toolbeltのインストール

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

https://toolbelt.heroku.com/

Typesafe Activator をダウンロード

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

http://typesafe.com/community/core-tools/activator-and-sbt

パスを通す

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
```

http://localhost:9000/

上記にアクセスし成功してれば「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を修正

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

https://github.com/saito400/play-scala-demo

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

ローカルで動作確認

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

$ activator run

http://localhost:9000/にアクセスし問題ないことを確認

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でログを確認する

saito400
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away