【发布时间】:2019-07-26 19:10:04
【问题描述】:
我需要猴子补丁文件。 Timecop 不会影响文件系统报告的时间,这是File.atime 使用的时间,反过来也是 HttpClient 在将文件发布到服务器时使用的时间,这反过来意味着 VCR 不能按预期工作。 AFAIK,这意味着我不能使用改进。
我不明白这里发生了什么:
class File
def atime
"this one happens"
end
end
module CoreExtensions
module File
module TimecopCompat
def atime
"this one does not"
end
end
end
end
File.include CoreExtensions::File::TimecopCompat
File.new('somefile').atime # --> "this one happens"
为什么不进行基于模块的猴子补丁?我需要改变什么才能让它工作?我应该使用另一种猴子补丁吗?
【问题讨论】:
-
与您的问题不严格相关,但请注意使用 Timecop 是 no longer recommended。现在人们普遍认为最好使用 Rails TimeHelpers,特别是因为 Timecop 已经一年多没有更新了。在撰写本文时,它还没有正式支持最新的 ruby。 (至少它没有在 repo 的 travis.yml 中测试)当然,如果您正在维护一个没有时间升级的旧应用程序,那么这是继续使用它的充分理由。请注意。
标签: ruby monkeypatching