- Japan Edition
- ZDNet is available in the following editions:
- Austrailia
- Asia
- China
- France
- Germany
- United Kingdom
- USA
- Blog
- ホワイトペーパー
- 企業情報センター
- アメリカ発
- builder by ZDNet Japan
- CNET Japan
- TechRepublic Japan
Rubyやっててほんとに便利だなぁと思わせてくれる一つに、StringとかIntegerといった、組み込みのクラスでさえ簡単にアプリケーション側でオーバーライドできちゃう柔軟さがあります。
あんまやりすぎると危険なのでご利用は計画的にですが、Stringにこのメソッドがあったらめっちゃ楽なのになぁ、と思ったらhelper書く前にString拡張しちゃいましょう。
Stringにphpにあったstrimwidthみたいなの定義してみたり、NilClassにmethod_missing定義してバグの隠蔽してみたり
さすがに後者は実戦で使ったことはありませんが。。。
前置きが長くなってしまいましたけど、当然Rakeだって拡張できるよねって話が本題です。
前回紹介したrakeタスクの中にnotes:optimizeとかあって、optimizeなんて普段そんなタグ使ってないので使い道がないって話をしましたけど、だったら使い道があるものを作ればいいんじゃね?ということがrakeでも出来ちゃうわけです。
やり方はホントに簡単で、タスクを定義したファイルに.rakeという拡張子をつけて、rails_root/lib/tasksに置いておくだけ。
それじゃあ試しに簡単なの一つ。うちではOPTIMIZEやFIXMEは使ってないけど、REFっていうタグを使ってます。なのでnotes:refっていうタスクで、REFタグを出力させてみます。
RAILS_ROOT/lib/tasks/annotation.rake namespace :notes do desc "Enumerate all REF annotations" task :ref do SourceAnnotationExtractor.enumerate "REF" end end
こんだけ。
これ書いたら、rails_rootに戻って
$ rake -T | grep ref rake notes:ref # Enumerate all REF annotations $ rake notes:ref app/controllers/application.rb: * [ 11] ここにコメントが書ける
リストに追加されてますし、実行すればREFがついた部分がリストアップされます。
うちではこんな感じで出力したものを毎日開発者全員に送って、ソースレビューしたりリファクタリングしたりしてコツコツ修正しています。
タスクやメソッドがないからって、文句言っちゃダメです。なければ作るだけ。
押忍
※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。
ZDNet Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。