2011-03-30 82 views
1

我正在使用gem metar分析器来解析给定的天气报告(metar)。时间以UTC给出,但一旦我的物体从宝石中返回,它的时区为+2(丹麦)。我想将此更改为UTC,但保持小时。更改时区

所以我发现这个方法

module ActiveSupport 
    class TimeWithZone 
    def zone=(new_zone = ::Time.zone) 
     # Reinitialize with the new zone and the local time 
     initialize(nil, ::Time.__send__(:get_zone, new_zone), time) 
    end 
    end 
end 

它可能不是这样做的最优雅的方式。但问题是,我应该把这个time_with_zone.rb文件放在/ lib /中吗?无论如何,我从zone=得到一个NoMethodError。

+1

在Rails 3中,/ lib文件不是自动加载的(在Rails 2中是这样)。您应该在'application.rb'文件中添加'config.autoload_paths + =%W(#{config.root}/lib /)'。 – rubyprince 2011-03-30 11:21:33

回答

1

您是否找到了编码here?你可以像约翰在他的回答中解释的那样做,并在config/initializers目录或lib目录中创建一个文件。但是,放置在lib目录中需要将目录添加到自动加载路径。这是在config/application.rb文件中完成的。您应该添加如下内容:

config.autoload_paths += %W(#{config.root}/lib/)