モデルのプライベートメソッドで実行されている単純なメソッドがあります。
def with_time_zone(zone)
@old_time_zone = Time.zone
Time.zone = self.account.timezone
Chronic.time_class = Time.zone
yield
ensure
Time.zone = @old_time_zone
Chronic.time_class = @old_time_zone
end
私はそれをこのように使用します:
with_time_zone(account.timezone) do
Time.parse(@time)
end
ただし、テストを実行するときは、タイムゾーンをESTに設定して開始しますが、時間を比較するときはTime.zone
、そのブロックで最後に使用されたタイムゾーンに設定されます。したがって、ensure
メソッドが呼び出されておらず、Time.zoneがリセットされていないことを通知します。
なぜこれが起こっているのか誰もが知っていますか?