1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

config.time_zone and TimeWithZone#marshal_load accept tzinfo/Olson identifiers

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9108 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Geoff Buesing 2008-03-28 04:35:48 +00:00
parent 59183eec6f
commit c62db052a0
5 changed files with 17 additions and 2 deletions

View file

@ -1,5 +1,7 @@
*SVN*
* TimeWithZone#marshal_load does zone lookup via Time.get_zone, so that tzinfo/Olson identifiers are handled [Geoff Buesing]
* Time.zone= accepts TZInfo::Timezone instances and Olson identifiers; wraps result in TimeZone instance [Geoff Buesing]
* TimeWithZone time conversions don't need to be wrapped in TimeOrDateTime, because TZInfo does this internally [Geoff Buesing]

View file

@ -206,7 +206,7 @@ module ActiveSupport
end
def marshal_load(variables)
initialize(variables[0], ::TimeZone[variables[1]], variables[2])
initialize(variables[0], ::Time.send!(:get_zone, variables[1]), variables[2])
end
# Ensure proxy class responds to all methods that underlying time instance responds to

View file

@ -312,6 +312,17 @@ uses_tzinfo 'TimeWithZoneTest' do
assert_equal Time.utc(1999, 12, 31, 19), mtime.time
end
end
def test_marshal_dump_and_load_with_tzinfo_identifier
silence_warnings do # silence warnings raised by tzinfo gem
twz = ActiveSupport::TimeWithZone.new(@utc, TZInfo::Timezone.get('America/New_York'))
marshal_str = Marshal.dump(twz)
mtime = Marshal.load(marshal_str)
assert_equal Time.utc(2000, 1, 1, 0), mtime.utc
assert_equal 'America/New_York', mtime.time_zone.name
assert_equal Time.utc(1999, 12, 31, 19), mtime.time
end
end
def test_method_missing_with_non_time_return_value
silence_warnings do # silence warnings raised by tzinfo gem

View file

@ -1,5 +1,7 @@
*SVN*
* config.time_zone accepts TZInfo::Timezone identifiers as well as Rails TimeZone identifiers [Geoff Buesing]
* Rails::Initializer#initialize_time_zone raises an error if value assigned to config.time_zone is not recognized. Rake time zone tasks only require ActiveSupport instead of entire environment [Geoff Buesing]
* Stop adding the antiquated test/mocks/* directories and only add them to the path if they're still there for legacy reasons [DHH]

View file

@ -353,7 +353,7 @@ module Rails
# If assigned value cannot be matched to a TimeZone, an exception will be raised.
def initialize_time_zone
if configuration.time_zone
zone_default = TimeZone[configuration.time_zone]
zone_default = Time.send!(:get_zone, configuration.time_zone)
unless zone_default
raise "Value assigned to config.time_zone not recognized. Run `rake -D time` for a list of tasks for finding appropriate time zone names."
end