замена instance_exec(& Proc.new) в Ruby 2.7
В нашем приложении есть небольшой долгоживущий код, который устанавливает систему "флагов функций" и выглядит следующим образом:
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()
bit выдает неприятное предупреждение об устаревании. Как мне исправить в этом случае? Просто заменив на&block
как предполагается, здесь не работает.
1 ответ
Спасибо всем. @tadman был прав. Я заменил&Proc.new
с участием &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