我正在尝试从 Ruby 应用程序中提取一些代码到 gem 中以进行代码重用。为了安全地做到这一点,我想通过创建一个虚拟“栅栏”来确保项目中没有对其他代码的引用。“栅栏”内的唯一代码应该是现有的 gem 和我试图 gemify 的代码。
我正在考虑通过一些魔术猴子补丁来实现这一点,该补丁挂钩到方法调用逻辑并随后记录每个方法调用。
这是我要实现的目标的视觉表示:
一些假设:
- 要gemified的代码远小于项目中的总代码
- 项目代码可以修改,但仍需要生产质量
我已经使用此处推荐的解决方案进行了调查:
但是,此解决方案会拦截接收方的方法调用,并且还需要在项目中的每个类中扩展代码(好吧,除了要 gemify 的类中)。
理想情况下,我最多想扩展所有要被宝石化的类。