【发布时间】:2020-03-11 18:55:05
【问题描述】:
我们的应用中有一些长期存在的代码,用于设置“功能标志”系统,如下所示:
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 替换它建议在这里不起作用。
【问题讨论】:
-
为什么
&block在这里不起作用? -
只是好奇,这条线的意义何在?
-
@maxpleaner 大概他们正在做一些类似于 AR 关联的扩展方法 (api.rubyonrails.org/classes/ActiveRecord/Associations/…),至少我是这样做的。我没有得到
self返回值。更多上下文会很好。 -
def configure(&block)和instance_exec(&block)怎么没用? -
@muistooshort 不是
instance_exec(&Proc.new)无操作吗?