我有一個簡單的方法在我的模型的私有方法運行:紅寶石`ensure`沒有運行
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未被重置。
任何人都知道爲什麼會發生這種情況?