ujunのブログ

mruby-hibari on mod_mrubyが動いた。

mruby-hibariというmrbgemがあり、主要なWebサーバならなんとM/WレベルでRackテイストなWebアプリを書けるようです。

kysnm.hatenablog.com

kysnm.hatenablog.com

Apacheでやってみたところ、少し修正して、なんとか動きました!!

まず、通常通り以下のようにmod_mrubyをビルド。

$ git clone https://github.com/matsumoto-r/mod_mruby
$ cd mod_mruby
$ vim build_config.rb  # 依存gemにkentaro/mruby-hibariを追加します。
$ sh test.sh
$ sh build.sh

で、こうして生成されたmod_mruby.soモジュールをApacheにて利用します。

サンプルにならえば、以下のようにLocationとmrubyHandlerMiddleCodeでhello, world!!ができます。

curl!!

$ curl http://lcoalhost/rack_base?hoge=fuga
$ 

と思いましたが、なにも返ってきません。

でもH2OでもNginxでもうまくいってるっぽいんだけどと思いつつ、mruby.confで何をやってもうまくいってくれない。。

さんざん見直した末、以下が種明かしだと気付きました。

github.com

'nginx' || 'apache''nginx'と評価されるようですね。なので、

case engine
when 'nginx' || 'apache' # => when 'nginx'

となるため、caseの中に'apache'がマッチする条件がなくなってしまうということのよう。

複数条件に正しくマッチさせるには、

case engine
when 'nginx', 'apache'

とする必要があるようです。

このPR、送ったら即座にmergeしていただけました!

curl!!

$ curl http://localhost/rack_base?hoge=fuga
Hello, World!hoge: fuga

ちゃんと出ました。

自分が普段お世話になっているmrubyとそのmrbgems達のコントリビュータの末席を汚すことになり、鼻血がとまりません。