mirror of
https://github.com/github/rails.git
synced 2026-01-27 23:38:11 -05:00
Fix TimeWithZone unmarshaling: coerce unmarshaled Time instances to utc, because Ruby's marshaling of Time instances doesn't respect the zone
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*Edge*
|
||||
|
||||
* Fix TimeWithZone unmarshaling: coerce unmarshaled Time instances to utc, because Ruby's marshaling of Time instances doesn't respect the zone [Geoff Buesing]
|
||||
|
||||
* Added Memoizable mixin for caching simple lazy loaded attributes [Josh Peek]
|
||||
|
||||
* Move the test related core_ext stuff out of core_ext so it's only loaded by the test helpers. [Michael Koziarski]
|
||||
|
||||
@@ -263,7 +263,7 @@ module ActiveSupport
|
||||
end
|
||||
|
||||
def marshal_load(variables)
|
||||
initialize(variables[0], ::Time.send!(:get_zone, variables[1]), variables[2])
|
||||
initialize(variables[0].utc, ::Time.send!(:get_zone, variables[1]), variables[2].utc)
|
||||
end
|
||||
|
||||
# Ensure proxy class responds to all methods that underlying time instance responds to.
|
||||
|
||||
@@ -320,8 +320,11 @@ class TimeWithZoneTest < Test::Unit::TestCase
|
||||
marshal_str = Marshal.dump(@twz)
|
||||
mtime = Marshal.load(marshal_str)
|
||||
assert_equal Time.utc(2000, 1, 1, 0), mtime.utc
|
||||
assert mtime.utc.utc?
|
||||
assert_equal ActiveSupport::TimeZone['Eastern Time (US & Canada)'], mtime.time_zone
|
||||
assert_equal Time.utc(1999, 12, 31, 19), mtime.time
|
||||
assert mtime.time.utc?
|
||||
assert_equal @twz.inspect, mtime.inspect
|
||||
end
|
||||
end
|
||||
|
||||
@@ -331,8 +334,11 @@ class TimeWithZoneTest < Test::Unit::TestCase
|
||||
marshal_str = Marshal.dump(twz)
|
||||
mtime = Marshal.load(marshal_str)
|
||||
assert_equal Time.utc(2000, 1, 1, 0), mtime.utc
|
||||
assert mtime.utc.utc?
|
||||
assert_equal 'America/New_York', mtime.time_zone.name
|
||||
assert_equal Time.utc(1999, 12, 31, 19), mtime.time
|
||||
assert mtime.time.utc?
|
||||
assert_equal @twz.inspect, mtime.inspect
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user