主要观点:展示一种在编写软件时看似违规调用私有方法但能安心的简单方式,以及如何通过在启动时将假设编码来解决此类问题。
关键信息:
- 作者在为 Rails 内置静态文件服务器写自定义包装器时,需调用私有方法
ActionDispatch::FileHandler#find_file
,虽知不应调用但还是写了代码让其工作,send
用于调用私有方法且存在代码风险。 - 作者最初纠结是否内联功能并提前掌控,最终决定在初始化器中编码假设,如
config/initializers/invariant_assumptions.rb
中,若 Rails 方法签名改变则会抛出异常,提前预警。 - 写此笔记比解决问题花费时间长 20 倍。
重要细节: - 私有方法调用存在风险,调用者可能不会被 Rails 团队支持。
- 初始化器中的代码在不同环境下有不同处理,非生产环境会检查方法参数是否符合假设。
- 作者还提供了通过 RSS、Mastodon 订阅网站,以及注册 newsletter 和 podcast 等获取信息的方式。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。