いいかんじの URL を実装したい in Ruby

この記事は筆者が見た夢を一人称視点で叙述した内容です。事実ではなく、実際の人物等とは一切関係ありません。

いいかんじの URL を実装したい in Ruby

  1. May を汎用的なスクリプトにしたい。公開したい。
  2. 簡単な WAF を書いて、それで実装しよう。
  3. URL ルーティングどうしよう。

こんなかんじ。 Ruby で書くんだし、ブロックをうまく使いたいとおもっている。あと、明らかに車輪の再発明くさいけど、 Ruby への理解を深めるという有意義な再発明なので気にしない。なんにせよ Rails はおれにとって現実的じゃない (XREA で動かすには CGI になるけど、クソ重いのは自明) ので、 Rails という選択肢は無い。

Catalyst の URL ルーティングがすっきりしているんだけど、 attribute 相当のものが Ruby にあるのかどうかわからない…というか、いまいち attribute がわからない。でも、 Catalyst の勉強をしたいわけじゃないので放っておく。こんなことしてるから経験値たまらないのかなあ。

class WebApp
  def edit(*params)
    # ...
  end

  def delete(*params)
    # ...
  end
end

こんな感じで /webapp/edit/doc.345.html にリクエスト送ると doc.345.html が引数に WebApp#edit が呼ばれるようなかんじにしたい。もしも、WebApp#edit/webapp/update/doc.345.html みたいな URL で呼びたかったら、 alias :update :edit とでもしてあげたらいい。

いまいち具体例が思いつかないけど、 Ruby のメソッドでカバーできないアクションを定義したいとき ([0-9]からはじまるとか) は Object#method_missing を使ってうまくやってやる。とか、どうだろう。あんまりヘンなことを自前で実装するより Ruby にもともとある機能であれこれするほうが勉強にもなるんじゃないか、とかおもう。