■ Rubyの定数はできるだけfreezeさせようと思った もう10数年もRuby使ってるのに、すげー初歩的なミスに気づかず2日もムダにしてしまった。典型的な「mutableな定数」問題。 CONST = 'foo' def bar(opt) str = CONST str << opt baz(str) end みたいなメソッドbarがマルチスレッドの奥底で何度も呼び出されて、そのたびにCONSTの中身が変わってしまっているのに気づかず、スレッドの競合かなにかに違いないと決めつけて延々と別のところを調べていたという。「CONST = 'foo'.freeze」って書いておけばすぐわかったはずなので、今後本当に定数として使いたいときはfreezeすることにする。 (最近のrubyの実装でこのあたりのトピックがあった気がするけど思い出せない) ■ 小田急線の脱線事故で帰宅難民化しそうになった