rubyベストプラクティスchapter8.1

プロジェクトメンテナンスの方法の導入部分。
この章ではhamlを参考にrubyのライブラリをどのように理解していくかを見ていきます。

導入

  1. まずはREADME読む。
  2. Rakefileがあればrake --tasksでタスクの一覧を確認しよう。
    1. rake taskには install、test、rdoc(最近はdocというタスクもあるらしい)、packageくらいは作っておこう
  3. RDocを読もう
  4. テストを読もう

このような手順でライブラリの理解を深めていっているようです。なので、一般的なライブラリのユーザはここに書かれている手順を踏んで、ライブラリ自体の理解を吹深めていくので、箇条書きに書かれたことはライブラリ作者になる時には

  1. README
  2. rakeでの自動化
  3. RDoc
  4. テスト

は最低限書きましょうということですな。

このChapterでのまとめは上記のような感じ。

つまづいたところ

テストを読もうというくだりでつまづいたので、メモです。

本の中ではhamlで重要だと思われるのはHaml::Engineクラスで、そこのテストを読んでいます。テストファイルは

test/haml/engine_test.rb

にあります。

本の中ではrederメソッドを見ています。
renderメソッドはhaml形式の文字列をhtmlに変換をしているメソッドで、要のメソッドなそうな。

テストファイルの中でrenderというヘルパーメソッドを定義しています。(TestEngine#render)まぎわらしい(わかりやすい)ことにEngineクラスのrenderというメソッド(Engine#render)はEngineクラスの中でhtmlに変換することを担当していて、TestEngine#renderはEngine#renderをテストで使用するにあたっての前処理と
Engine#renderの呼び出しを担当していました。
ということを本の中ではさらりと説明していました。

とりあえずそれらしきところに、pを入れまくって確認。

さて、本の内容に戻るとテストからrenderメソッドのだいたいの使い方は予想できそうです。hamlの書式もある程度予想できそうな感じ。
たとえばこんな感じ

def test_empty_render_should_remain_empty
  assert_equal('', render(''))
end

def test_attibutes_should_render_correctly
  assert_equal("<div class='atlantis' style='ugly'></div>",
    render(".atlantis{:style => 'ugly'}").chomp
end

第一引数はHamlの文字列で後のオプションは省略可能。
たぶんもう少しテストを追っていくとオプションを指定しているところも確認できそう。


Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック