今回はどうも泥臭い話です。
もしかすると、将来勝手に解決されてるかもしれません。
erbからslimにしたviewのとある機能について検証していたところ、こんなエラーがでました。
ERROR: compiling _app_views_hoges_search_html_slim__ RAISED /home/shuzo/rails/app/views/hoges/search.html.slim:41: syntax error, unexpected keyword_ensure, expecting end-of-input
該当箇所をみても、そんなモノはでていない。
大体、エラーが41行目とか言ってるがslimファイルは40行しかない。
一体どうなっているのでしょう??
……結論を言うと、「コンバータのif-elseのネスト化が想定通りいっていない」事が原因でした。
実際のところ
当該エラーを引きおこしたのは、以下のような構造の部分です。
- if(@hoge.blank?) | 該当なし - else | 該当あり
色々調べたところ、どうもelseがイマイチ上手く動いていないようです。
暫定処置としてunlessで条件を書く方向に変更します。
- if(@hoge.blank?) | 該当なし - unless(@hoge.blank?) | 該当あり
どうも格好悪い気がしますが、ロジック上の矛盾を発生することなくエラーを潰すことができました。
昔、組み込み業界で働いていたときに「case文だと駄目だがif-elseで書き直すと動いた」という
コンパイラエラー*1の話があったのを思い出しました。
*1:マイナーな石だと、有りがちな話なのです