-
Notifications
You must be signed in to change notification settings - Fork 690
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
Using audited in Rails 7.0.7 generates a lot of deprecation warnings #682
Comments
This happens because Psych (the YAML serializer bundled with Ruby) serializes Date values with Worse, if you override Here's an initializer patch for both issues, for a codebase where someone changed # frozen_string_literal: true
# NOTE: Overriding Date::DATE_FORMATS[:default] breaks YAML serialization of Date values.
date = Date.today
# Check and patch YAML serialization of Date values, if necessary.
unless ActiveSupport::Deprecation.silence { YAML.dump(date) } == "--- #{date.strftime('%F')}\n"
# Override format and apply https://github.com/ruby/psych/pull/573 too.
Psych::Visitors::YAMLTree.class_exec do
# :reek:UncommunicativeMethodName and :reek:UncommunicativeParameterName are irrelevant here.
def visit_Date(o) # rubocop:disable Naming/MethodName
formatted = o.gregorian.strftime("%F")
register(o, @emitter.scalar(formatted, nil, nil, true, false, ::Psych::Nodes::Scalar::ANY))
end
end
end
# Check YAML deserialization of the old overriden format, and patch if necessary.
unless YAML.unsafe_load("--- #{date.strftime('%m/%d/%Y')}\n") == date
# Parse the Date strings that we used to generate before the above patch.
Psych::ScalarScanner.prepend(
Module.new do
def tokenize(string)
return nil if string.empty?
if string.match?(/^(?:1[012]|0\d|\d)\/(?:[12]\d|3[01]|0\d|\d)\/\d{4}$/)
# US format date
require "date"
begin
class_loader.date.strptime(string, "%m/%d/%Y", ::Date::GREGORIAN)
rescue ArgumentError
string
end
else
super
end
end
end
)
end |
Reported to Psych upstream: ruby/psych#644 |
Oof, I was worried it would be Psych. Thanks for pointing it out and providing a possible workaround. I'll close this issue now since there's nothing to do in |
This is an example of the warnings:
Removing the
audited
line from theUser
model silences these warnings which leads me to think that the root cause might lie within this gem.From Rails' side, these warnings started being emitted since this commit: rails/rails@7e9ffc2 (in the 7.0.7 release, August 9th, see https://github.com/rails/rails/blob/7-0-stable/activesupport/CHANGELOG.md#rails-707-august-09-2023).
Any tips to help pinpoint where these deprecation warnings originate from exactly would be much appreciated.
The text was updated successfully, but these errors were encountered: