MacでHerokuにYesodを(Yesod導入・アプリビルド編)

前回cabal-installがインストール出来たので、いよいよYesodのインストール、更にアプリのビルドまで行ってみましょう!

相変わらずUbuntu on VirtualBoxで作業します。

yesodのインストール

cabal-installがインストール出来たので、Yesodはこれを使って楽にインストールしてしまいましょう。
参考ページは本家のGetting Started with Yesod

sudo cabal update
sudo cabal install Cabal cabal-install yesod

アプリの作成

yesodコマンドでアプリの雛形を自動生成します。
雛形とは言いましたが、今回はHerokuにテストで載せる実行ファイルがほしいだけなので何も手を加えないです。

yesod init

アプリ名はfirst-herokuにしました。

もしyesodコマンドがPATHの通っていない場所にある場合はパスのが必要です。私の環境では必要でした。

~/.cabal/bin/yesod init

ビルドに必要な依存ライブラリのインストール

実はYesodで作ったアプリをビルドするには、まだライブラリが足りません。
cabal-installで楽しようと思っても、依存を解決出来ずにインストール出来ません。

仕方がないのでcabal-installに頼らず、HackageDBからダウンロードしてきてインストールします。

インストールしたライブラリは以下。入れ子は依存関係を示しています。

  • language-javascript-0.4.5
    • utf8-light-0.4.0.1
    • happy-1.18.8
    • alex-3.0.1
      • QuickCheck-2.4.2

下の方からインストールするとうまくいきます。

アプリのビルド

いよいよビルドです。

cd first-heroku
sudo cabal install

ここでのcabalコマンドにはsudoを付ける必要があります。
Yesodアプリのビルドにはまだ足りないライブラリがあって、cabal installコマンドはこれらのライブラリをインストールしようとするのですが、このときにルート権限が必要なのです。
2つ目以降のYesodアプリの場合は、sudoは必須ではありません。

ずらずらっとコンソールにログが出て

...
Linking dist/build/first-heroku/first-heroku ...
Installing executable(s) in /home/****/.cabal/bin

おお!!成功!!
実行してみよう・・・ドキドキ・・・

sudo ~/.cabal/bin/yesod devel

とやってコンソールに

Devel application launched, listening on port 3000"

と表示されたら
http://localhost:3000/
にアクセスします。

・・・おおおっっっ!!
ついにやった!!

しかしまだ安心出来ません。

目標はあくまでHerokuに実行ファイルを公開すること。
これは次のエントリにて。