最近、Mojoliciousを触っています。
バグとかのお話ではないです、ただ自分が馬鹿なだけです。
結果としては、Teng様のバージョン違いを把握していなかった為でありました。
では、その3時間の経過をば、つらつらと…。
- ローカルで作ったプログラムが、テスト環境で動かなかった。
- テスト方法はTest::Mojo使ってstatusとかを見るテスト。
- 期待通りのstatusが返ってこない。
- エラーが吐かれないで処理が途中で落ちてるっぽい。(自分の書き方が雑なせいさ!!)
- デバッガで辿ろう>Mojo::Exceptionに辿り着く。>やっぱり途中で落ちてる。
- けど、何が原因で落ちてるのかわからん!!(自分がデバッガを読みきれてない…。)
- 疲れる。
- デバッガは諦めて。伝家の宝刀、二部探索!!
- しかし、なかなか出来ない。(printだかwarnなどなどするも出ない…。)
- なかなか出来ない。(2回言うけれど、自分の書き方が雑なせい!)
- 出来ない。(この辺、記憶が曖昧…意識が朦朧…。)
- ボクはここで負けるのか…負けてしまうのか…。
- 否!エラーをキャッチしよう!!
- プログラムをtry{}catch{};で全体を括る。
- 実行!
- 出来た!!と思ったらデータが多すぎて目が追うのを拒否してる(use DDP; p $e;)
- データを読んでも脳みそが拒否してわからない。
- p ref $e;してみた、"Mojo::Exception"。さっきの奴だ。
- Mojo::Exceptionを読む。
- print $e->to_string; column get が無いよ。DBでエラー的なメッセージ。
(print $eって最初からしてたらto_stringと同じだったのね、なんでもかんでもダンプする癖が仇となった…。)
- でもgetなんてcolumnは無い…。
- 該当行を見に行く。
foreach (@$rows) { $_->get("id"); }
的に書かれている。
- ん?get??がメソッド?なのにcolumn??そうか!getって書いてある所はカラム名を直接指定していいんだね!?
foreach (@$rows) { $_->id; }
- 通ったキター!!
- で、なんでローカルで通ったんだろう…。
- Teng::Rowを調べる。
- ローカルのTeng::Row 0.20ではgetメソッドがあって、テスト環境のTeng::Row 0.18ではgetメソッドが無かったということでした。
(以前のバージョンからであれば、get_column("id")的に書くのがベターであったのであろう…たしか。)
という感じでハマっていました!!