ruby - 在 Ruby 2.7 中替换 `instance_exec(&Proc.new)`
问题描述
我们的应用程序中有一些长期存在的代码,用于设置“功能标志”系统,如下所示:
def configure
Module.new do
def self.feature(name, options = {})
Features.current.add(name, options)
end
instance_exec(&Proc.new)
end
self
end
在 Ruby 2.7 中,该instance_exec()
位会引发令人讨厌的弃用警告。在这种情况下我将如何解决?按照它的建议简单地替换&block
在这里不起作用。
解决方案
感谢大家。@tadman 说得对。我已经替换了&Proc.new
with&block
但是是一个假人,也没有将它添加到方法定义中。在这两个地方添加解决了问题并消除了 ruby 2.7 弃用警告(关于不使用 Proc.new 捕获块。)
更正后的代码:
def configure(&block)
Module.new do
def self.feature(name, options = {})
Features.current.add(name, options)
end
instance_exec(&block)
end
self
end
推荐阅读
- javascript - jQuery 和 Bootstrap 自动完成 javascript 对象
- javascript - IndexedDB “and” 和 “or” 查询
- ecmascript-6 - 为什么类 getter 转换为可枚举属性?
- python - crontab 从未在 Ubuntu 上运行
- r - 在数据框中查找最接近的匹配值并返回索引
- angular - 如何从模态向其父组件发出事件
- python - 将 Anaconda 添加到 PATH 后,Jupyter Notebook 无法打开?
- django - 如何使博客标题对用户唯一?
- python-3.x - 将 UNIX 时间戳转换为日期?
- r - 如何交换 facet_wrap 的两个图