mirror of https://github.com/rails/rails
Merge pull request #50268 from Shopify/opt-time-at
Optimize `Time.at_with_coercion`
This commit is contained in:
commit
98df193aaf
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue