aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/callbacks_test.rb
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2016-08-02 14:54:25 +0200
committerKasper Timm Hansen <kaspth@gmail.com>2016-08-02 14:54:25 +0200
commit6eb978234cdce57e75c36a096fa76a634705c7c8 (patch)
tree028f76821c190c056f92a8f81a80d49f37cbe3f9 /activesupport/test/callbacks_test.rb
parent6b441559b1e4bfa080e99a9f55fb5e8f3ced4864 (diff)
downloadrails-6eb978234cdce57e75c36a096fa76a634705c7c8.tar.gz
rails-6eb978234cdce57e75c36a096fa76a634705c7c8.tar.bz2
rails-6eb978234cdce57e75c36a096fa76a634705c7c8.zip
Let Psych 2.0.9+ deserialize 2.0.8 serialized parameters.
If we were to serialize an `ActionController::Parameters` on Psych 2.0.8, we'd get: ```yaml --- !ruby/hash:ActionController::Parameters key: :value ``` Because 2.0.8 didn't store instance variables, while 2.0.9 did: https://github.com/tenderlove/psych/commit/8f84ad0fc711a82a1040def861cb121e8985fd4c That, coupled with 2.0.8 calling `new` instead of `allocate` meant parameters was deserialized just fine: https://github.com/tenderlove/psych/commit/af308f8307899cb9e1c0fffea4bce3110a1c3926 However, if users have 2.0.8 serialized parameters, then upgrade to Psych 2.0.9+ and Rails 5, it would start to blow up because `initialize` will never be called, and thus `@parameters` will never be assigned. Hello, `NoMethodErrors` on `NilClass`! :) To fix this we register another variant of the previous serialization format and take it into account in `init_with`. I've tested this in our app and previously raising code now deserializes like a champ. I'm unsure how to test this in our suite because we use Psych 2.0.8 and don't know how to make us use 2.0.9+ for just one test.
Diffstat (limited to 'activesupport/test/callbacks_test.rb')
0 files changed, 0 insertions, 0 deletions