読者です 読者をやめる 読者になる 読者になる

rack でカレントディレクトリを公開する

rack でカレントディレクトリを公開したいときの config.ru の書き方をいつも忘れてしまうので、自分用に備忘録を残しておきます。
https://gist.github.com/1109610.js?file=config.ru


ルートパスへのアクセスでディレクトリの一覧が出したければ1行目は不要ですし、 public ディレクトリ以下を公開させたい場合には、2行目を書き換えてやればOKです。

で、これを Heroku にデプロイしようとしたときにハマりました。

push して サーバが起動するところまでは確認できるのですが、アプリケーションにアクセスしようとすると、エラーメッセージが表示されます。

2011-07-27T15:40:09+00:00 app[web.1]: !! Unexpected error while processing request: type mismatch: Array given


どうやら、Heroku でデフォルトで利用される Rack のバージョンが古く、 Rack::Static が受け取れるオプションの形式が最新の Rack のものではないのが原因のようでした。

なので、 Gemfile も一緒にデプロイするとよいです。
https://gist.github.com/1109610.js?file=Gemfile


Heroku で利用される Rack のバージョンって、公式に発表されてないんですかねぇ。