В духе действительно опоздания на вечеринку; -)
Я думаю, что шаблон, который вы здесь используете, - это шаблон Стратегии.
Это разделяет проблемы между кодом, который изменяет «правила» и
часть, которая повторно используется "человек". Другая сила этого шаблона
что вы можете изменить правила во время выполнения.
Как это могло бы выглядеть
class Person
attr_accessor :name
def initialize(&rules)
@name = "ruby"
instance_eval(&rules)
end
end
Person.new do
puts @name
end
=> ruby