03 Dec '12, 2pm

ruby-2.0.0preview2 + rails-3.2 が動かなくなった

ruby-2.0.0preview2 + rails-3.2 が動かなくなった

■ ruby-2.0.0preview2 + rails-3.2 が動かなくなった preview2 といっても毎日ビルドしているので特に限定したものではないのだけど、最新の trunk では Object#initialize_dup が public から private に変わったようで、この影響で Rails に多数存在する以下のコードが動かなくなってしまった。 https://github.com/rails/rails/blob/3-2-stable/activerecord/lib/active_record/base.rb#L563 # Backport dup from 1.9 so that initialize_dup() gets called unless Object . respond_to? ( :initialize_dup ) def dup # copy = super copy . initialize_dup ( self ) copy end end 1.9 にある initializedup を 1.8 にバックポートしているんだけど、2.0 では initialize dup が private になったので、この respondto? を通過してしまうというのが原因みたい。respond to? は二つ目の引数に true をつけると private でも動くようになるので直しておいた。 https://github.com/rails/rails/pull/8405 あと、Marshal#dump 付近で何か落ちてるような気がするのでこれは明日。

Full article: http://www.hsbt.org/diary/20121203.html#p01

Tweets