Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换Ruby 2.7中的'instance_exec(&;Proc.new)`_Ruby_Ruby 2.7 - Fatal编程技术网

替换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)
一个无操作?