mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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
This commit is contained in:
parent
e97d48f17e
commit
75ad0e642c
2 changed files with 8 additions and 19 deletions
|
@ -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.
|
||||
|
||||
|
|
|
@ -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 @@ module ActiveSupport
|
|||
# (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 @@ module ActiveSupport
|
|||
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 @@ module ActiveSupport
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue