net/http にDELETE希望

あれ、やっぱりnet/httpにはdeleteメソッドはないのかな?

./agentbase.rb:104:in `delete': undefined method `delete' for # (NoMethodError)

などと言われてしまう。
http://d.hatena.ne.jp/jouno/20050120/1106154823には、deleteが使われているスクリプトがあるのだが。
うう、コメントが付けられないので聞けない…

しかたないのでDELETEをでっちあげてみた。今日は面倒なのでハイライトは無し。

module Net
  class HTTP
    class Delete < HTTPRequest
      METHOD = 'DELETE'
      REQUEST_HAS_BODY  = false
      RESPONSE_HAS_BODY = true
    end

    def delete(path,initheader = nil)
      res = request(Delete.new(path,initheader))
      res.value unless @newimpl
      res
    end
  end
end

net/httpをrequireしたあとにこの定義文を置けばdeleteが追加される。rubyだとこういう後付けが楽でいい。
getメソッド等を適当にコピーして作ったので、変な定義の可能性大。@newimplの意味もわかってません。コメント募集中。一応、AtomAPI経由でLivedoorブログのエントリを消すのには使えました。

1.9系にはdeleteが存在した!

id:jounoさんが利用していたのは1.9系だというコメントを頂き、CVSリポジトリを眺めてみたら確かにありますね。deleteメソッド。あとでそっちのソースを参考にしてちょっと書き直したほうがよいかな。