aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/values/time_zone.rb5
-rw-r--r--activesupport/test/time_zone_test.rb8
2 files changed, 10 insertions, 3 deletions
diff --git a/activesupport/lib/active_support/values/time_zone.rb b/activesupport/lib/active_support/values/time_zone.rb
index 03b324764b..9db6bbafca 100644
--- a/activesupport/lib/active_support/values/time_zone.rb
+++ b/activesupport/lib/active_support/values/time_zone.rb
@@ -1,4 +1,5 @@
require 'active_support/core_ext/object/blank'
+require 'active_support/core_ext/object/try'
# The TimeZone class serves as a wrapper around TZInfo::Timezone instances. It allows us to do the following:
#
@@ -205,8 +206,8 @@ module ActiveSupport
if @utc_offset
@utc_offset
else
- @current_period ||= tzinfo.current_period
- @current_period.utc_offset
+ @current_period ||= tzinfo.try(:current_period)
+ @current_period.try(:utc_offset)
end
end
diff --git a/activesupport/test/time_zone_test.rb b/activesupport/test/time_zone_test.rb
index 61c59060f3..58035ebbcd 100644
--- a/activesupport/test/time_zone_test.rb
+++ b/activesupport/test/time_zone_test.rb
@@ -274,9 +274,15 @@ class TimeZoneTest < Test::Unit::TestCase
assert_raise(ArgumentError) { ActiveSupport::TimeZone[false] }
end
- def test_unknown_zone_shouldnt_have_tzinfo
+ def test_unknown_zone_shouldnt_have_tzinfo_nor_utc_offset
zone = ActiveSupport::TimeZone.create("bogus")
assert_nil zone.tzinfo
+ assert_nil zone.utc_offset
+ end
+
+ def test_unknown_zone_with_utc_offset
+ zone = ActiveSupport::TimeZone.create("bogus", -21_600)
+ assert_equal -21_600, zone.utc_offset
end
def test_new