Merge pull request #50268 from Shopify/opt-time-at

Optimize `Time.at_with_coercion`
This commit is contained in:
Jean Boussier 2023-12-05 16:08:28 +01:00 committed by GitHub
commit 98df193aaf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 11 deletions

View File

@ -42,20 +42,20 @@ class Time
# Layers additional behavior on Time.at so that ActiveSupport::TimeWithZone and DateTime # Layers additional behavior on Time.at so that ActiveSupport::TimeWithZone and DateTime
# instances can be used when called with a single argument # instances can be used when called with a single argument
def at_with_coercion(*args, **kwargs) def at_with_coercion(time_or_number, *args)
return at_without_coercion(*args, **kwargs) if args.size != 1 || !kwargs.empty? if args.empty?
if time_or_number.is_a?(ActiveSupport::TimeWithZone)
# Time.at can be called with a time or numerical value at_without_coercion(time_or_number.to_r).getlocal
time_or_number = args.first elsif time_or_number.is_a?(DateTime)
at_without_coercion(time_or_number.to_f).getlocal
if time_or_number.is_a?(ActiveSupport::TimeWithZone) else
at_without_coercion(time_or_number.to_r).getlocal at_without_coercion(time_or_number)
elsif time_or_number.is_a?(DateTime) end
at_without_coercion(time_or_number.to_f).getlocal
else else
at_without_coercion(time_or_number) at_without_coercion(time_or_number, *args)
end end
end end
ruby2_keywords :at_with_coercion
alias_method :at_without_coercion, :at alias_method :at_without_coercion, :at
alias_method :at, :at_with_coercion alias_method :at, :at_with_coercion