Interactions between Lolex, Timecop and the Cache in HyperSpec
还没有人认领这个 Issue。
评估
调研方向
首先定位 HyperSpec::Internal::Controller 的 cache_read、cache_write 和 cache_delete 方法,然后检查 Lolex.evaluate_ruby 以及 Filecache 和 Timecop 在其中如何交互。完成的标准是缓存操作使用系统时间,并且在 HyperSpec 未挂载时保留 Lolex 更新,同时不发送不必要的客户端通信。
由索引模型根据 Issue 内容生成。
描述
Hyperspec uses the Filecache gem, which uses Time.now. But if Timecop freezes time in a spec, then Time.now is not returning the system time, and the Filecache does not work. This should be fixable by wrapping calls to the Filecache with the timecop return method (and a block.) But this does not in general work because Hyperspec tries to communicate the "return" to the client, even if the client is not running.
The following series of patches fixes the issue, and can be incorporated into the next point release:
module HyperSpec
module Internal
module Controller
class << self
# wrap all calls with Timecop.return so the file cache gets the true system time
def cache_read(key)
Timecop.return { file_cache.get(key) }
end
def cache_write(key, value)
Timecop.return { file_cache.set(key, value) }
end
def cache_delete(key)
Timecop.return { file_cache.delete(key) }
rescue StandardError
nil
end
end
end
end
end
class Lolex
# store all lolex updates unless hyper_spec is mounted
def self.evaluate_ruby(&block)
if @capybara_page&.instance_variable_get('@hyper_spec_mounted')
@capybara_page.internal_evaluate_ruby(yield)
else
pending_evaluations << block
end
end
end
- 主要语言
- JavaScript
- 星标
- 538
- 派生
- 41
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
hyperstack-org/hyperstack 的其他 Issue
-
enhancement needs doc
难度 2/5 1-3 小时 新手友好度 68/100
hyperstack-org/hyperstack#359 ·
-
难度 2/5 1-3 小时 新手友好度 68/100
hyperstack-org/hyperstack#267 ·
-
难度 5/5 一周以上 新手友好度 25/100
hyperstack-org/hyperstack#457 ·
-
难度 3/5 1-2 天 新手友好度 35/100
hyperstack-org/hyperstack#456 ·
-
难度 5/5 一周以上 新手友好度 15/100
hyperstack-org/hyperstack#455 · 2 条评论 ·
查看 hyperstack-org/hyperstack 的全部 Issue
相似的 Issue
-
bug customer-eng Durable Agents Inngest status: needs triage
难度 2/5 1-3 小时 新手友好度 82/100
-
optimization optimization:agents-md-curator
难度 2/5 1-3 小时 新手友好度 75/100
githubnext/gh-aw-cao#13475 ·
-
[BUG]: "Clear All" in Settings doesn't clear the saved analysis, old data comes back after reload 未关闭bug
难度 2/5 1-3 小时 新手友好度 88/100
AOSSIE-Org/OrgExplorer#253 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 88/100
oxc-project/oxc#26944 ·
-
ai-observability bug team/ai-observability
难度 2/5 1-3 小时 新手友好度 78/100