rdefsをRails仕様に拡張してみる
最近はRubygemsのRSSを眺めて面白そうだなと思ったらインストールして軽く使い方とソースを眺めるというのがマイブームだったりするのですが、ソースを眺めるときに青木さんのrdefsは便利だなぁと思いました。
ただRailsとかだとcattr_readerとか色々拡張されているのでそれっぽいのをActiveSupportから調べてみました。(既に誰かやってそうな気もするけど。
--- bin/rdefs_orig 2006-09-12 23:29:24.000000000 +0900 +++ bin/rdefs 2006-09-10 16:55:17.000000000 +0900 @@ -7,10 +7,25 @@ DEF_RE = /\A\s*(?: def\s | class\s | module\s | include[\s\(] | alias(?:_\w+)? + | alias_method(?:_\w+)? | attr_reader[\s\(] | attr_writer[\s\(] | attr_accessor[\s\(] | attr[\s\(] + | cattr_reader[\s\(] + | cattr_writer[\s\(] + | cattr_accessor[\s\(] + | mattr_reader[\s\(] + | mattr_writer[\s\(] + | mattr_accessor[\s\(] + | class_inheritable_reader[\s\(] + | class_inheritable_writer[\s\(] + | class_inheritable_array_writer[\s\(] + | class_inheritable_hash_writer[\s\(] + | class_inheritable_accessor[\s\(] + | class_inheritable_array[\s\(] + | class_inheritable_hash[\s\(] + | reset_inheritable_attributes | public[\s\(] | private[\s\(] | protected[\s\(]
何か抜けとか他にもこういうのも加えとくと良さそうとかあればコメントとかください。
cattr_readerなどは同様のことをしたいときのデフォルトになり得る気もするので、ActiveSupportの中身を再解体してCPANっぽくclass-attribute_accessorsとかclass-inheritable_attributesとかに分けて欲しいなと思いました。
さすがに
require 'rubygems' require 'active_support/core_ext/class/attribute_accessors'
はめんどいと思ってしまう。(と思いつつ今打ってみたら案外めんどくさくなかった
まぁRuby使ってる人はたいていActiveSuportをインストールしてるのでActiveSupportに依存した方が可搬性は高いと思いますが。