aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
diff options
context:
space:
mode:
authorThomas Balthazar <thomas@balthazar.info>2016-10-01 13:26:15 +0200
committerThomas Balthazar <thomas@balthazar.info>2016-10-01 13:38:43 +0200
commit607a6c7a9a6fb3d8bd7d08d0307018b626105d83 (patch)
tree2b5362469256acead3d6c45edfa2e60aadd66df5 /activesupport/lib/active_support
parent268a5bb010ef91880d9b03b60e5e86ae5521e73c (diff)
downloadrails-607a6c7a9a6fb3d8bd7d08d0307018b626105d83.tar.gz
rails-607a6c7a9a6fb3d8bd7d08d0307018b626105d83.tar.bz2
rails-607a6c7a9a6fb3d8bd7d08d0307018b626105d83.zip
Fix `ActiveSupport::TimeWithZone#localtime`
Previously memoization in `localtime` wasn't taking the `utc_offset` parameter into account when returning a cached value. It now caches the computed value depending on the `utc_offset` parameter, e.g: Time.zone = "US/Eastern" t = Time.zone.local(2016,5,2,11) # => Mon, 02 May 2016 11:00:00 EDT -04:00 t.localtime(-7200) # => 2016-05-02 13:00:00 -0200 t.localtime(-3600) # => 2016-05-02 14:00:00 -0100
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r--activesupport/lib/active_support/time_with_zone.rb3
1 files changed, 2 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/time_with_zone.rb b/activesupport/lib/active_support/time_with_zone.rb
index c35588fbae..bee481e5f5 100644
--- a/activesupport/lib/active_support/time_with_zone.rb
+++ b/activesupport/lib/active_support/time_with_zone.rb
@@ -80,7 +80,8 @@ module ActiveSupport
# Returns a <tt>Time</tt> instance of the simultaneous time in the system timezone.
def localtime(utc_offset = nil)
- @localtime ||= utc.getlocal(utc_offset)
+ @localtime ||= {}
+ @localtime[utc_offset] ||= utc.getlocal(utc_offset)
end
alias_method :getlocal, :localtime