Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve performance by removing respond_to? from runtime code #45578

Merged
merged 1 commit into from Jul 12, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 11 additions & 5 deletions activerecord/lib/active_record/coders/yaml_column.rb
Expand Up @@ -45,14 +45,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.use_yaml_unsafe_load
YAML.safe_load(payload, permitted_classes: ActiveRecord.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.use_yaml_unsafe_load
YAML.unsafe_load(payload)
else
YAML.safe_load(payload, permitted_classes: ActiveRecord.yaml_column_permitted_classes, aliases: true)
end
end
else
def yaml_load(payload)
if ActiveRecord.use_yaml_unsafe_load
YAML.load(payload)
else
YAML.safe_load(payload, permitted_classes: ActiveRecord.yaml_column_permitted_classes, aliases: true)
end
end
end
Expand Down