class TZInfo::DataSources::ZoneinfoDataSource

def initialize(zoneinfo_dir = nil, alternate_iso3166_tab_path = nil)

Raises:
  • (ZoneinfoDirectoryNotFound) - if no valid directory can be found
  • (InvalidZoneinfoDirectory) - if the iso3166.tab and zone1970.tab or

Parameters:
  • alternate_iso3166_tab_path (String) -- an optional path to the
  • zoneinfo_dir (String) -- an optional path to a directory to use as
def initialize(zoneinfo_dir = nil, alternate_iso3166_tab_path = nil)
  super()
  if zoneinfo_dir
    iso3166_tab_path, zone_tab_path = validate_zoneinfo_dir(zoneinfo_dir, alternate_iso3166_tab_path)
    unless iso3166_tab_path && zone_tab_path
      raise InvalidZoneinfoDirectory, "#{zoneinfo_dir} is not a directory or doesn't contain a iso3166.tab file and a zone1970.tab or zone.tab file."
    end
    @zoneinfo_dir = zoneinfo_dir
  else
    @zoneinfo_dir, iso3166_tab_path, zone_tab_path = find_zoneinfo_dir
    unless @zoneinfo_dir && iso3166_tab_path && zone_tab_path
      raise ZoneinfoDirectoryNotFound, "None of the paths included in #{self.class.name}.search_path are valid zoneinfo directories."
    end
  end
  @zoneinfo_dir = File.expand_path(@zoneinfo_dir).freeze
  @timezone_identifiers = load_timezone_identifiers.freeze
  @countries = load_countries(iso3166_tab_path, zone_tab_path).freeze
  @country_codes = @countries.keys.sort!.freeze
  string_deduper = ConcurrentStringDeduper.new
  posix_tz_parser = PosixTimeZoneParser.new(string_deduper)
  @zoneinfo_reader = ZoneinfoReader.new(posix_tz_parser, string_deduper)
end