argius note

プログラミング関連

Skinny Frameworkで作ったアプリをHerokuで動かしてみよう

Skinny Frameworkで作ったWebアプリをHerokuにアップしてみました。

※この記事は、Skinny Framework 1.0.13時点のものです。


概要

Skinny Framework(以下、skinnyと表記)は、Herokuをサポートしています。

ただし、現時点ではWindowsの場合に注意すべき点があるので、それについては後述します。


開発環境

  • Windows 7 professional 32bit
  • Skinny Framework 1.0.13 (skinny-blank-app.zip)
  • heroku/toolbelt/3.7.3 (i386-mingw32) ruby/1.9.2

準備

以前、Play2でHerokuを使った(下記リンク参照)ので、Herokuツール(toolbelt)のインストールについてはここでは割愛します。

Herokuのドキュメンテーションページもあわせてご覧ください。


また、skinnyのアプリを作るところは、下記エントリーを参照してください。

アプリを作ったら、ローカルのGitリポジトリーを作成します。既にリポジトリーがあるアプリを使う場合は、ここはスキップします。

 > git init
 > git add . -v
 > git commit -m "init"

Herokuツールのインストールと、skinnyのアプリを作ってローカルで動かすところまで出来たら、準備完了です。


アプリ名の修正

Heroku上ではstandaloneで動作します。standaloneのassembly-jarファイルは、pakcage/Build.scalaappNameappVersionに設定されている文字列が使用されます。例えば、appName="aaaa-bbbb"appVersion="0.1.0-SNAPSHOT"の場合は、aaaa-bbbb-standalone-assembly-0.1.0-SNAPSHOT.jarになります。
heroku/runにHeroku上で起動するためのコマンドがあるので、このコマンドで指定されているjarファイル名がこのファイル名に対応するように修正する必要があります。


Windowsの場合の注意

Windowsの場合は、SHスクリプトパーミッションが644になるため、ビルドと起動でエラーになってしまいます。

 ./skinny
 ./heroku/common.sh
 ./heroku/run
 ./heroku/skinny
 ./heroku/stage

git-update-indexを使って、755で登録しなおします。

 > git update-index --chmod=+x skinny heroku/*
 > git commit

Herokuに新規アプリを作成

Herokuサーバー上に新しいアプリを作ります。
コマンドプロンプトを開き、アプリのルートディレクトリに移動してから、herokuのコマンドを実行します。
今回は、アプリ名は自動にします。

 > heroku apps:create

アプリ名はaaaa-bbbb-9999(仮)になりました。
ここでGitリポジトリーのURLも表示されますので、リモートに追加しておきます。

 > git remote add heroku git@heroku.com:aaaa-bbbb-9999.git

データベースの準備と設定

Postgresアドオンを設定します。これも以前のエントリーに書いていますので、そちらを参照してください。


skinnyのデータベース設定はsrc/main/resources/application.confにあります。これは修正する必要はありませんが、ここで使用する環境変数を設定する必要があります。

> heroku config 
=== aaaa-bbbb-9999 Config Vars
DATABASE_URL:                postgres:// ...
 (他の変数は省略)
> heroku config:set DATABASE_HOST=...
> heroku config:set DATABASE_USER=...
> heroku config:set DATABASE_PASSWORD=...
> heroku config 
=== aaaa-bbbb-9999 Config Vars
DATABASE_URL:                postgres:// ...
DATABASE_HOST:               ...
DATABASE_USER:               ...
DATABASE_PASSWORD:           ...
 (他の変数は省略)
>

デプロイ

あとはデプロイと、DBマイグレーションをすれば動作します。

 > git remote add heroku git@heroku.com:aaaa-bbbb-9999.git
 > git push heroku master
 > heroku run heroku/skinny db:migrate production

初回は時間かかります。混み具合にもよると思いますが、2回目以降は5~6分くらいで完了しました。

なお、DBマイグレーションの時に、メモリー制限(Memory quota)の512MBを超えたためログにエラーが出ましたが、処理は問題なく実行できました。



あとはアプリを起動して、動作を確認します。

エラーが出たら、デプロイか実行時のログを見て、エラーの原因を探しましょう。
エラーを流しておくには、下記コマンドを実行します。

  • Herokuのログをtail -20fする
 > heroku logs --tail -n 20

これで、skinnyで作ったアプリをみんなに公開できるようになりました。