在Rails应用程序中对/ etc / localtime进行过多的stat调用

时间:2011-08-30 12:22:42

标签: ruby-on-rails ruby time timezone

我刚刚使用了Rails-App,它产生了很多

stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0

通话(真的很多!)。 在其他情况下,我读过这是因为没有设置时区。 有没有办法“修复”这个?

最佳,

托拜厄斯

2 个答案:

答案 0 :(得分:4)

这不是红宝石问题,而是C / Linux问题: 设置“TZ”ENV-Var将导致在etc / localtime上不再有stat调用。 但它不会产生重大的性能影响:

# irb
require 'benchmark'
Benchmark.measure { 10_000_000.times { Time.now } }
 =>  17.880000   0.540000  18.420000 ( 21.535307)

# same with TZ=CET irb
 =>  18.040000   0.550000  18.590000 ( 20.892542)   

答案 1 :(得分:1)

正如@fabio所说,您应该将此报告给Rails论坛或邮件列表,因为它可能是一个错误。

但是,要在config/environment.rb

中设置时区
Rails::Initializer.run do |config|
  config.time_zone = "Central Time (US & Canada)"
end

您可以使用rake time:zones:usrake time:zones:localrake time:zones:all获取可用时区(取决于您在世界的哪个位置。)