Browse files

Don't lazy load the tzinfo library

Lazy loading the tzinfo library doesn't really buy us anything because
the gem is installed as a dependency via the gemspec and if a developer
is using Active Support outside of Rails then they can cherry pick which
files to load anyway.

Fixes #13553
  • Loading branch information...
1 parent e97d48f commit 75ad0e642c69cd037ce02172ce68e664634389ed @pixeltrix pixeltrix committed Jan 1, 2014
Showing with 8 additions and 19 deletions.
  1. +6 −0 activesupport/CHANGELOG.md
  2. +2 −19 activesupport/lib/active_support/values/time_zone.rb
View
6 activesupport/CHANGELOG.md
@@ -1,3 +1,9 @@
+* Don't lazy load the `tzinfo` library as it causes problems on Windows.
+
+ Fixes #13553
+
+ *Andrew White*
+
* Use `remove_possible_method` instead of `remove_method` to avoid
a `NameError` to be thrown on FreeBSD with the `Date` object.
View
21 activesupport/lib/active_support/values/time_zone.rb
@@ -1,3 +1,4 @@
+require 'tzinfo'
require 'thread_safe'
require 'active_support/core_ext/object/blank'
require 'active_support/core_ext/object/try'
@@ -208,8 +209,6 @@ def self.seconds_to_utc_offset(seconds, colon = true)
# (GMT). Seconds were chosen as the offset unit because that is the unit
# that Ruby uses to represent time zone offsets (see Time#utc_offset).
def initialize(name, utc_offset = nil, tzinfo = nil)
- self.class.send(:require_tzinfo)
-
@name = name
@utc_offset = utc_offset
@tzinfo = tzinfo || TimeZone.find_tzinfo(name)
@@ -389,7 +388,7 @@ def [](arg)
case arg
when String
begin
- lazy_zones_map[arg] ||= create(arg).tap { |tz| tz.utc_offset }
+ @lazy_zones_map[arg] ||= create(arg).tap { |tz| tz.utc_offset }
rescue TZInfo::InvalidTimezoneIdentifier
nil
end
@@ -406,22 +405,6 @@ def [](arg)
def us_zones
@us_zones ||= all.find_all { |z| z.name =~ /US|Arizona|Indiana|Hawaii|Alaska/ }
end
-
- protected
-
- def require_tzinfo
- require 'tzinfo' unless defined?(::TZInfo)
- rescue LoadError
- $stderr.puts "You don't have tzinfo installed in your application. Please add it to your Gemfile and run bundle install"
- raise
- end
-
- private
-
- def lazy_zones_map
- require_tzinfo
- @lazy_zones_map
- end
end
private

0 comments on commit 75ad0e6

Please sign in to comment.