Rails/Ruby 在升级后以某种方式删除了“美国/东部”?

问题描述 投票:0回答:1

当我将 7.0.8.6 与 ruby 3.2.2 一起使用时,

US/Eastern
工作正常,现在我在执行时遇到错误:

irb(main):001:0> Time.now.in_time_zone('US/Eastern')

/home/fernando/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/activesupport-7.0.8.6/lib/active_support/core_ext/time/zones.rb:84:in ‘find_zone!’:无效时区:美国/东部(ArgumentError) old_raise.call(*args, **kwargs)

当我升级到 Rails 7.2.2.1 和 ruby 3.3.6 时出现该错误。 当我恢复到 7.0.8.6 时,我做了

bundle install --redownload
,但错误仍然存在。

这里发生了什么?

ruby-on-rails ruby
1个回答
0
投票

我尝试播放你的错误,但不幸的是发现了所有区域,并且行为有点奇怪:

irb(main):025> ActiveSupport::TimeZone['US/Eastern']
=> 
#<ActiveSupport::TimeZone:0x000000012593dd68
 @name="US/Eastern",
 @tzinfo=#<TZInfo::DataTimezone: US/Eastern>,
 @utc_offset=nil>
irb(main):026> ActiveSupport::TimeZone.all.select { |n| n.name == "US/Eastern" }
=> []

顺便说一下,您可以使用“America/New_York”,“US/Eastern”时区是 America/New_York 的别名。您可以在代码中将 US/Eastern 的所有实例替换为 America/New_York。

irb(main):028> Time.now.in_time_zone('America/New_York')
=> Sat, 04 Jan 2025 09:05:14.723409000 EST -05:00
irb(main):029> Time.now.in_time_zone('US/Eastern')
=> Sat, 04 Jan 2025 09:05:29.728619000 EST -05:00
© www.soinside.com 2019 - 2024. All rights reserved.