rubyベストプラクティスchapter6.2

バグ報告からテストコードへの変換の方法
問題が発生したコードから問題の核を見つけ出す方法。

素直に写経。

でも、当然のごとく直近のPrawnを使うと事象は発生しません。
発生するべきバグが発生しないのはなんか気持ち悪いので、prawnのGitHubリポジトリからcloneして見ていくと、バグ発生前のコードが確認出来ました。
コミット番号は998a5c。チェックアウトするにはその1つ前の7e94d2を使えばいい。
ここがだめだったらしい。

init_bounding_box(block) do |_|

こう治してる

init_bounding_box(block, :hold_position => true) do |_|

おぉ見事に改ページされてる。ここの部分をだめなように変更すると見事に改ページされます。
実際のリポジトリの変更内容を見ていくと、再現のために追加されたと思われるテストコードも確認できます。
本の内容とは違う。(prawnってテストをrspecで書いているんだけど、この本だとなんでtestunitで書かれてるんだろ。。。。)

ここでは、再現させるためのコードは自己文書化しましょうってのがためになったなぁ。ここではpdfの生成ライブラリでの話だったので、出力するpdfに

ここは改ページしちゃだめ

とかそんなことを書いておくと便利だよーってこと。
たしかに「hoge」とかばっかじゃわからんし。


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

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