Skip to content

Commit

Permalink
Merge pull request #45578 from natematykiewicz/yaml_safe_load_perform…
Browse files Browse the repository at this point in the history
…ance

Improve performance by removing respond_to? from runtime code
  • Loading branch information
rafaelfranca authored and eileencodes committed Jul 15, 2022
1 parent 5436676 commit 21cd60e
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions activerecord/lib/active_record/coders/yaml_column.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,20 @@ def check_arity_of_constructor
raise ArgumentError, "Cannot serialize #{object_class}. Classes passed to `serialize` must have a 0 argument constructor."
end

def yaml_load(payload)
if !ActiveRecord::Base.use_yaml_unsafe_load
YAML.safe_load(payload, permitted_classes: ActiveRecord::Base.yaml_column_permitted_classes, aliases: true)
else
if YAML.respond_to?(:unsafe_load)
if YAML.respond_to?(:unsafe_load)
def yaml_load(payload)
if ActiveRecord::Base.use_yaml_unsafe_load
YAML.unsafe_load(payload)
else
YAML.safe_load(payload, permitted_classes: ActiveRecord::Base.yaml_column_permitted_classes, aliases: true)
end
end
else
def yaml_load(payload)
if ActiveRecord::Base.use_yaml_unsafe_load
YAML.load(payload)
else
YAML.safe_load(payload, permitted_classes: ActiveRecord::Base.yaml_column_permitted_classes, aliases: true)
end
end
end
Expand Down

0 comments on commit 21cd60e

Please sign in to comment.