Я хотел бы предложить некоторые усовершенствования DSL. Я могу получить уточнения, работающие с этим примером:Уточнения Ruby с экземпляром_exal
module ArrayExtras
refine Array do
def speak
puts 'array!'
end
end
end
module MyUniverse
using ArrayExtras
class Thing
def initialize
[1].speak
end
end
end
MyUniverse::Thing.new
Это печатает «массив!». просто хорошо. Но как только я представлю instance_eval
, метод не может быть найден:
module MyUniverse
using ArrayExtras
class DSL
def initialize(&block)
instance_eval(&block)
end
end
end
MyUniverse::DSL.new do
[1].speak
end
Я получаю undefined method
говорить»для [1]: Array (NoMethodError)`
Есть ли способ, чтобы получить уточнения, работающие в экземпляр_eval?
А, получилось. Благодаря! – Andy