' GMT-05:00)EST' time_zone_select下拉列表中意外包含的选项

时间:2015-07-14 13:57:20

标签: ruby-on-rails ruby-on-rails-3

(使用Rails 3.2.20,ruby 1.9.3)

在我的网站制作中,#(GMT-05:00)EST'选项意外地包含在time_zone_select下拉列表中:

img

ActiveSupport::TimeZone::MAPPING中不存在此时区。注入ActiveSupport::TimeZone.zones_map

def zones_map
    @zones_map ||= begin
      new_zones_names = MAPPING.keys - lazy_zones_map.keys
      new_zones       = Hash[new_zones_names.map { |place| [place, create(place)] }]

      lazy_zones_map.merge(new_zones)
    end
  end
lazy_zones_map.merge(new_zones)行上

因为lazy_zones_map包含" EST"区。

在我的开发框上不会发生这种情况,并且在我的Rails生产控制台中不会发生ActiveSupport::TimeZone.send :lazy_zones_map会返回{"UTC"=>(GMT+00:00) UTC}

但是当我在生产中加入我的观点时

<%= ActiveSupport::TimeZone.send :lazy_zones_map %>

我得到{"UTC"=>(GMT+00:00) UTC, "EST"=>(GMT-05:00) EST}。我不明白为什么会发生这种想法?

#lazy_zones_map定义是

def lazy_zones_map
  require_tzinfo

  @lazy_zones_map ||= Hash.new do |hash, place|
    hash[place] = create(place) if MAPPING.has_key?(place)
  end
end

编辑:在生产和开发中使用相同版本的tzinfo,0.3.44(我已使用命令Gem.loaded_specs["tzinfo"]检查过)。

0 个答案:

没有答案