Clojure + Heroku を試してみる

ということで先日書いてみたサンプルアプリを Heroku に載せてみることにした

先日書いたのはコレ
http://d.hatena.ne.jp/Voluntas/20111124/1322075170

ちなみにレポジトリはコレ
https://github.com/voluntas/clj-snowflake

とりあえず動いたのはコレ
http://morning-summer-6648.herokuapp.com/

Heroku 対応準備

Python の時でなんとなく知っているので難しい事は考えない事にした。

久々なので sudo gem update heroku はしておいた。

やったことは二つだけ

Procfile を作る

これは Python の時も一緒で、以下の一行を書いておいた

web: lein run -m snowflake.core

Ring の開発サーバは動かないので Jetty アダプターを使う

ring.adapter.jetty を使えるように use で呼ぶ。
ローカルでは lein ring server でもいいがデプロイは Jetty なので lein run -m snowflake.core で動かせるようにおまじないをしておく PORT 番号を指定するのは Python と一緒。

(ns snowflake.core
  (:use compojure.core
        ring.adapter.jetty)
  (:require [clj-json.core :as json]
            [compojure.route :as route]
            [compojure.handler :as handler]))
;; 省略
(defn -main []
  (let [port (Integer/parseInt (get (System/getenv) "PORT" "8080"))]
    (run-jetty main-routes {:port port})))

heroku にインスタンスを作る

$ heroku create --stack cedar

remote に heroku が自動で追加されるので git push heroku develop:master して終わり。
開発ブランチが develop なのは git-flow を使っているからです。

感想

簡単、簡単すぎる。
Python の時より簡単な気がしないでもない。データベースにつないでいないのでそらそうか。

今後はポスグレにつなぐ & Mongo HQ を使うといった事に挑戦か。