目標
scalaをyosemiteに入れて、apiサーバー作って、herokuに上げたいと思います。
vagrantで環境をつくってもいいかなと思いましたが、scalaのコンパイルにやたら時間がかかるということなので、vagrantだと不安、、、一旦Mac本体でやります。
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
$ play new appName
とりあえず動かしてみる
$ cd appName
$ play run
おっせーーー((((;゚Д゚))))ガクガクブルブル
この段階で遅いってマジかよ。。。
開発を進めていくとコンパイルに3分とか5分とか10分とかかかると聞くので、(´ε`;)ウーン…って感じはしますね。
ちなみに、IPアドレスがIPv6で示されているのは仕様なのかな。。。?
localhost:9000にアクセス
こんな画面が見れたらOK.
Git
Gitを入れます。
たいていの場合は入っているかと思いますが、なかったら homebrewかなんかでいれます。
(省略)
$ git init
$ git add .
$ git commit -am "Initial Commit"
ライセンスが云々言われる場合もありますが、流してagreeしちゃえばOKかと。
Heroku
アカウント
アカウントがない場合はつくります。
heroku toolbelt
herokuコマンドを使うために、heroku toolbeltをインストールします。
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 で登録した文字列で。
こんな感じでコンパイルが始まります。
エラーがあればここで弾かれます。
アクセス
herokuアプリのURLにアクセスします。
URLはherokuのマイページやgit push の際のログページに記載されています。
もしくは以下のコマンドでいきます。
$ heroku open
特に何にも設定しなければこんな画面が見れるかと思います。
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直下に作成します。
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)