2011-12-15 12 views
0

Rubyスクリプトに現在の日付(GMT)を取得し、ET(東部時間)に変換するコード行がいくつかあります。未初期化定数ActiveSupport :: TimeZone(NameError)

私はそのための私のRubyスクリプトでこのコードを持っている:

# get current time and date in ET 
my_offset = 3600 * -5 # US Eastern 

# find the zone with that offset 
zone_name = ActiveSupport::TimeZone::MAPPING.keys.find do |name| 
    ActiveSupport::TimeZone[name].utc_offset == my_offset 
end 
zone = ActiveSupport::TimeZone[zone_name] 

time_locally = Time.now 
time_in_zone = zone.at(time_locally) 

問題は、それが(まあ、このライン上で)ここでエラーを与えている:zone_name = ActiveSupport::TimeZone::MAPPING.keys.find do |name|uninitialized constant ActiveSupport::TimeZone (NameError)

誰もが間違っているのか知っていますか? Stack Overflowからこのコードセグメントを取得しました。here

+0

'rubygems'が必要ですか?そのコードの先頭に 'active_support'が必要ですか?あなたがしなければそれが必要です。 – ctcherry

+0

ええ、私はこれらのコードを自分のコードで持っています。まだ動作しません。 – swiftcode

答えて

1

あなたの他は必要とした後

require 'active_support/time_with_zone' 

を追加します。

+0

これでエラーは解決しましたが、新しいエラーが発生します: '/Library/Ruby/Gems/1.8/gems/activesupport-3.0.0/lib/active_support/values/time_zone.rb:260:in at '未定義のメソッドin_time_zone 'for Thu 12月17日17:43:18 UTC 2011:Time(NoMethodError) \t ruby​​ ratings.rbから:35' 私のコードの35行目は 'time_in_zone = zone.at(time_locally)'です。 – swiftcode

関連する問題