我知道这是个坏主意,但我有很多遗留代码,我想运行一些历史批处理作业。我不想更改系统日期,因为其他东西在同一系统上运行。有什么方法可以更改 Date.today 仅在给定进程的生命周期内返回的值。这里的想法是倒带并运行一些用于处理 Date.today 的旧批处理脚本。
谢谢 乔尔
最佳答案
您可以像 Nikolaus 向您展示的那样对 Ruby 进行猴子补丁,也可以使用 TimeCop gem。它旨在使编写测试更容易,但您也可以在普通代码中使用它。
# Set the time where you want to go.
t = Time.local(2008, 9, 1, 10, 5, 0)
Timecop.freeze(t) do
# Back to the future!
end
# And you're back!
# You can also travel (e.g. time continues to go by)
Timecop.travel(t)
这是一段很棒但简单的代码。试一试,当您自己用猴子修补日期和时间时,它会让您省去一些麻烦。
关于ruby-on-rails - 如何在正在运行的 ruby 进程中更改 Date.today 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4026360/