替换Ruby 2.7中的'instance_exec(&;Proc.new)`
我们的应用程序中有一些长寿命代码,用于设置“功能标志”系统,如下所示:替换Ruby 2.7中的'instance_exec(&;Proc.new)`,ruby,ruby-2.7,Ruby,Ruby 2.7,我们的应用程序中有一些长寿命代码,用于设置“功能标志”系统,如下所示: def配置 新模块 def self.feature(名称,选项={}) Features.current.add(名称、选项) 结束 实例\u exec(&Proc.new) 结束 自己 结束 在Ruby 2.7中,instance\u exec()bit抛出了一个讨厌的弃用警告。在这种情况下,我该如何解决?按照建议,简单地用&block替换在这里不起作用。谢谢大家@塔德曼说得对。我已经用&block替换了&Proc.n
def配置
新模块
def self.feature(名称,选项={})
Features.current.add(名称、选项)
结束
实例\u exec(&Proc.new)
结束
自己
结束
在Ruby 2.7中,
instance\u exec()
bit抛出了一个讨厌的弃用警告。在这种情况下,我该如何解决?按照建议,简单地用&block
替换在这里不起作用。谢谢大家@塔德曼说得对。我已经用&block
替换了&Proc.new
,但是它是一个虚拟的,并且没有将它添加到方法定义中。这两个地方的添加解决了这个问题,并消除了ruby 2.7的弃用警告(关于不使用Proc.new捕获块)
更正后的代码:
def配置(&block)
新模块
def self.feature(名称,选项={})
Features.current.add(名称、选项)
结束
实例_exec(&block)
结束
自己
结束
为什么&block
在这里不起作用?我只是好奇,这一行的意义是什么?@maxpleaner可能他们在做一些类似于AR关联()的扩展方法的事情,至少我是在这里这样做的。但是我没有得到self
返回值。更多的上下文就更好了。def configure(&block)
和instance\u exec(&block)
怎么不起作用?@muistooshort不是instance\u exec(&Proc.new)
一个无操作?