mirror of https://github.com/rails/rails
remove Time._dump and Time._load patching for ruby 1.8
This commit is contained in:
parent
b28ed2bd4f
commit
daef51ee0a
|
@ -1,30 +1,3 @@
|
|||
# Pre-1.9 versions of Ruby have a bug with marshaling Time instances, where utc instances are
|
||||
# unmarshalled in the local zone, instead of utc. We're layering behavior on the _dump and _load
|
||||
# methods so that utc instances can be flagged on dump, and coerced back to utc on load.
|
||||
if !Marshal.load(Marshal.dump(Time.now.utc)).utc?
|
||||
class Time
|
||||
class << self
|
||||
alias_method :_load_without_utc_flag, :_load
|
||||
def _load(marshaled_time)
|
||||
time = _load_without_utc_flag(marshaled_time)
|
||||
time.instance_eval do
|
||||
if defined?(@marshal_with_utc_coercion)
|
||||
val = remove_instance_variable("@marshal_with_utc_coercion")
|
||||
end
|
||||
val ? utc : self
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
alias_method :_dump_without_utc_flag, :_dump
|
||||
def _dump(*args)
|
||||
obj = dup
|
||||
obj.instance_variable_set('@marshal_with_utc_coercion', utc?)
|
||||
obj._dump_without_utc_flag(*args)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Ruby 1.9.2 adds utc_offset and zone to Time, but marshaling only
|
||||
# preserves utc_offset. Preserve zone also, even though it may not
|
||||
# work in some edge cases.
|
||||
|
|
Loading…
Reference in New Issue