common-lisp
Heroku
buildpack
roswell

Nextremer Advent Calendar 2017の4日目です。

Herokuでは様々な言語のbuildpackを公式にサポートしているようですが、残念ながらCommon Lispがありません。

なので、Roswellを使ったCommon Lisp用buildpackを作りました。
また、Herokuを使う場合何らかのWebサービスを作ることが多いと思うので、HerokuでClackを動かすサンプルを作りました。

使い方

buildpackにheroku-buildpack-roswellを指定します。

heroku create --buildpack https://github.com/gos-k/heroku-buildpack-roswell

設定ファイル

heroku-buildpack-roswell用の設定ファイルには次のものがあります。

  • .roswell-install-list : このファイルに書かれたものを順に引数として ros install を実行します。
  • .roswell-use : ファイルの内容を引数として ros use を実行します。
  • .roswell-load-system-list : このファイルに書かれたものを順に引数として ros run -s を実行します。

RoswellデフォルトのCommon Lisp処理系を使う場合には、.roswell-use は不要です。
Herokuでのキャッシュの都合上、使用するライブラリを .roswell-load-system-list に記載して下さい。

例えばClackを使う場合、次のようなファイルが必要です。

.roswell-install-list
clack
.roswell-load-system-list
clack

Clackアプリケーションが app.lisp に書かれているとした場合、Profileは次のようにします。

Procfile
web: clackup --port $PORT app.lisp