Posted at

[Scala] 初めてのScala on Play Framework on Heroku

More than 3 years have passed since last update.


目標

scalaをyosemiteに入れて、apiサーバー作って、herokuに上げたいと思います。

vagrantで環境をつくってもいいかなと思いましたが、scalaのコンパイルにやたら時間がかかるということなので、vagrantだと不安、、、一旦Mac本体でやります。

Screen Shot 2014-11-08 at 10.13.01.png


svmのインストール

https://github.com/yuroyoro/svm

/usr/local/bin/ に置きました。

$ chmod 755 /usr/local/bin/svm

お使いのシェルに以下を追記。

export SCALA_HOME=~/.svm/current/rt

export PATH=$SCALA_HOME/bin:$PATH

svmコマンドを叩く。

$ svm                                                   

currently version is

こんな感じになったらOK。

Scalaのバージョンを確かめる

http://www.scala-lang.org/


Scalaをインストール

$ svm install 2.11.4

インストール完了後

$ scala

----
Welcome to Scala version 2.11.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_65).
Type in expressions to have them evaluated.
Type :help for more information.

scala>

となると思います。


上記がめんどい場合は

$ brew install scala

or

# ここら落とす

http://www.scala-lang.org/

でOK。


PlayFramworkのインストール

$ brew install play

あんまり考えたくないのでこれでいきました。

ビール絵文字が出てきてCompleteってなったらOKです。


playコマンドを叩いてみる

$ play

Screen Shot 2014-11-08 at 9.51.57.png

$ play new appName

Screen Shot 2014-11-08 at 9.53.55.png

Screen Shot 2014-11-08 at 9.54.05.png


とりあえず動かしてみる

$ cd appName

$ play run

おっせーーー((((;゚Д゚))))ガクガクブルブル

この段階で遅いってマジかよ。。。

Screen Shot 2014-11-08 at 10.02.56.png

開発を進めていくとコンパイルに3分とか5分とか10分とかかかると聞くので、(´ε`;)ウーン…って感じはしますね。

ちなみに、IPアドレスがIPv6で示されているのは仕様なのかな。。。?


localhost:9000にアクセス

Screen Shot 2014-11-08 at 10.04.26.png

こんな画面が見れたらOK.


Git

Gitを入れます。

たいていの場合は入っているかと思いますが、なかったら homebrewかなんかでいれます。

(省略)

$ git init

$ git add .
$ git commit -am "Initial Commit"

ライセンスが云々言われる場合もありますが、流してagreeしちゃえばOKかと。

Screen Shot 2014-11-08 at 10.09.41.png


Heroku


アカウント

アカウントがない場合はつくります。


heroku toolbelt

herokuコマンドを使うために、heroku toolbeltをインストールします。

Screen Shot 2014-11-08 at 10.15.19.png


heroku にログイン

$ heroku login


heroku に上げる


herokuにアプリを作ります。

$ heroku create app_name

---
Creating app_name... done, stack is cedar-14
https://app_name.herokuapp.com/ | git@heroku.com:app_name.git

ここで表示される git@heroku.com:app_name.git は次で使います。


git に今作ったアプリのリポジトリを登録します。

$ git remote add heroku git@heroku.com:app_name.git 

このherokuの部分は好きな文字列でいいです。

リポジトリの登録名になります。

あとから変更も出来ます。



  • 作成

$ ssh-keygen -t rsa 

とかして、なんとか鍵を作成します。


  • 登録

$ heroku keys:add

参考: https://devcenter.heroku.com/articles/keys


~/.ssh/config 設定



Host heroku.com

HostName heroku.com
port 22
User git
PreferredAuthentications publickey
identityfile ~/.ssh/heroku_id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

↑例です


もしherokuアカウントを複数使っている場合

$ ssh -v git@heroku.com


あげます

$ git push heroku master

herokuのところは git remote で登録した文字列で。

Screen Shot 2014-11-09 at 10.12.41.png

こんな感じでコンパイルが始まります。

エラーがあればここで弾かれます。


アクセス

herokuアプリのURLにアクセスします。

URLはherokuのマイページやgit push の際のログページに記載されています。

もしくは以下のコマンドでいきます。

$ heroku open

特に何にも設定しなければこんな画面が見れるかと思います。

Screen Shot 2014-11-09 at 10.23.01.png

localで見たあのリッチな画面は production では見れないようです。

コードは app/views/index.scala.html ここに。


postgres に接続

herokuのPostgresに接続できるようにしたいと思います。


  • postgresが使われていることを確認

$ heroku addons

=== app_name Configured Add-ons
heroku-postgresql:hobby-dev HEROKU_POSTGRESQL_SILVER

もしアドオンがなかったら、

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


  • postgresのurlなどを確認

$ heroku config

=== app_name Config Vars
DATABASE_URL: postgres://hogehoge
HEROKU_POSTGRESQL_SILVER_URL: postgres://hogehoge
JAVA_OPTS: hogehoge
PATH: .jdk/bin:.sbt_home/bin:/usr/local/bin:/usr/bin:/bin
REPO: /app/.sbt_home/.ivy2/cache
SBT_OPTS: hogehoge


Procfile

デフォルトではないと思うので、アプリケーションのroot直下に作成します。


app_name/Procfile

web: target/start -Dhttp.port=${PORT} -DapplyEvolutions.default=true -Ddb.default.url=${DATABASE_URL} -Ddb.default.driver=org.postgresql.Driver



application.conf

db.default.url="jdbc:postgresql://localhost/XXXXX"

db.default.url=${?DATABASE_URL}


余談


vagrantだと

こんな感じでできますね。いろいろ入ってるし。](http://unok.hatenablog.jp/entry/2013/12/09/093845)


References