Joe*_*lio 6 ruby ruby-on-rails date
我知道这是一个坏主意,但我有很多遗留代码,我想要完成一些历史批处理作业.我不想更改系统日期,因为其他东西在同一系统上运行.有没有什么办法可以改变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)
Run Code Online (Sandbox Code Playgroud)
这是一个很棒但很简单的代码.尝试一下,当你自己修改日期和时间时,它会让你感到头疼.
链接:https://rubygems.org/gems/timecop