aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
diff options
context:
space:
mode:
authorAndrew White <andyw@pixeltrix.co.uk>2013-06-08 08:22:29 +0100
committerAndrew White <andyw@pixeltrix.co.uk>2013-06-08 09:45:45 +0100
commitf42e0fd3f4d3e2f4b806b001b6ed88c8da8cd833 (patch)
treec46885fef4c3c9c879f8198f0307402b4a0c4628 /activesupport/lib/active_support
parent20daaf4e2ab30762eeaf023e4870f5a10c34c534 (diff)
downloadrails-f42e0fd3f4d3e2f4b806b001b6ed88c8da8cd833.tar.gz
rails-f42e0fd3f4d3e2f4b806b001b6ed88c8da8cd833.tar.bz2
rails-f42e0fd3f4d3e2f4b806b001b6ed88c8da8cd833.zip
Override Time.at to work with Time-like values
Time.at allows passing a single Time argument which is then converted to an integer. The conversion code since 1.9.3r429 explicitly checks for an instance of Time so we need to override it to allow DateTime and ActiveSupport::TimeWithZone values.
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r--activesupport/lib/active_support/core_ext/time/calculations.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/time/calculations.rb b/activesupport/lib/active_support/core_ext/time/calculations.rb
index 9146d82bd8..7524063efb 100644
--- a/activesupport/lib/active_support/core_ext/time/calculations.rb
+++ b/activesupport/lib/active_support/core_ext/time/calculations.rb
@@ -45,6 +45,18 @@ class Time
def current
::Time.zone ? ::Time.zone.now : ::Time.now
end
+
+ # Layers additional behavior on Time.at so that ActiveSupport::TimeWithZone and DateTime
+ # instances can be used when called with a single argument
+ def at_with_coercion(*args)
+ if args.size == 1 && args.first.acts_like?(:time)
+ at_without_coercion(args.first.to_i)
+ else
+ at_without_coercion(*args)
+ end
+ end
+ alias_method :at_without_coercion, :at
+ alias_method :at, :at_with_coercion
end
# Tells whether the Time object's time lies in the past