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

CoffeeScriptで書いたExpressで簡単メンテナンスモード

CoffeeScriptで書いたExpress(Node.jsのSinatraみたいなもの)で簡単メンテナンスモードコンテストにチャレンジしてみます。

これまでのエントリー選手
CodeIgniterで簡単メンテナンスモード - localdisk
Pinocoで簡単メンテナンスモード - なんたらノート 第二期
Silex で簡単メンテナンスモード - ぷぎがぽぎ
symfony 1.4 で簡単メンテナンスモード - ぷぎがぽぎ

Express by CoffeeScript 選手の入場。

これが

app = (require 'express').createServer()

app.get '/', (req,res)->
    ...
#以下実装

こうなりました。

app = (require 'express').createServer()
app.all /.*/, (req,res) -> res.render 'maintenance'   #ここ追加

app.get '/', (req,res)->
    ...
#以下実装

またはより丁寧に。

app = (require 'express').createServer()
app.get /.*/, (req,res) -> res.render 'maintenance'   #GETはすべてメンテナンスページ
app.all /.*/, (req,rep) -> res.send 503             #その他は503エラー

app.get '/', (req,res)->
    ...
#以下実装

メンテナンス中ページは別途必要ですが省略します。HTML以外の変更が2行で済むところだけ見てください。もはやここまで来ると、フレームワークというより言語の短さの問題にしかなってませんね。

ちなみに、試してないですが、Sinatraだとこんな感じになると思います。

...
get     %r{.*} { haml :maintenance }
post   %r{.*} { 503 }
put     %r{.*} { 503 }
delete %r{.*} { 503 }
# option とか head もいる?
...

まったく、いつもRubyは短かくなりすぎて、知ってる人にしか意味わからない感じなんだよなぁ。

あ、ドキュメント読んで想像で書いてる不届き者です。間違ってたら教えて偉い人よろしくおねがいします。