ぼくらの勉強

ぼくらのための勉強をしていきます。

break from proc-closure エラーの対策

      2018/03/21

Rubyとかでbreakメソッドを使ってるとたまに遭遇する

break from proc-closure

というエラー。(ぼくの場合はAnemoneとかNokogiriを使ってHTMLをごちゃごちゃスクレイピングしてる時に初めて遭遇)

ネットで検索した時にあまりに情報が少なかったので記事にすることにしました。

 

このエラーが発生している原因は、エラーの文面通りbreakメソッドを使うべきでないオブジェクト(proc-closure)にbreakメソッドを使っているから。

じゃあproc-closureって何やねんっていう話になると思いますが、それは以下の記事を読んで何となくお察しいただければと思います。

参考記事なぜクロージャ(Closure)と言うのか?

(自分も未だにこいつの詳細を掴みきれていないのでこんな説明でどうかお許しを。ご指摘、ご教授お待ちしております)

結論を言うとぼくはbreakをnextに置き換えて解決しました。

例えば


break if a == b

としていてこの箇所でエラーが発生していたのを


next if a == b

と変更。

これで思い通りの挙動にならないこともあるとは思いますが、少しでもご参考になれば幸いです。