提交 b71732c8 编写于 作者: K Kasper Timm Hansen

Move the YAML hook closer to `init_with`.

Looked odd, so completely detached from the other necessary part of
the implementation.
上级 0e0cff0f
......@@ -9,14 +9,6 @@
require 'set'
require 'yaml'
# Wire up YAML format compatibility with Rails 4.2. Makes the YAML parser call
# `init_with` when it encounters `!ruby/hash-with-ivars:ActionController::Parameters`,
# instead of trying to parse it as a regular hash subclass.
# Second `load_tags` is for compatibility with Psych prior to 2.0.9 where hashes
# were dumped without instance variables.
YAML.load_tags['!ruby/hash-with-ivars:ActionController::Parameters'] = 'ActionController::Parameters'
YAML.load_tags['!ruby/hash:ActionController::Parameters'] = 'ActionController::Parameters'
module ActionController
# Raised when a required parameter is missing.
#
......@@ -600,6 +592,15 @@ def inspect
"<#{self.class} #{@parameters} permitted: #{@permitted}>"
end
def self.hook_into_yaml_loading # :nodoc:
# Wire up YAML format compatibility with Rails 4.2 and Psych 2.0.8 and 2.0.9+.
# Makes the YAML parser call `init_with` when it encounters the keys below
# instead of trying its own parsing routines.
YAML.load_tags['!ruby/hash-with-ivars:ActionController::Parameters'] = name
YAML.load_tags['!ruby/hash:ActionController::Parameters'] = name
end
hook_into_yaml_loading
def init_with(coder) # :nodoc:
case coder.tag
when '!ruby/hash:ActionController::Parameters'
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册