Вам необходимо сохранить доступ к «родительскому» объекту Test
.Это можно сделать, используя тот факт, что блоки являются замыканиями:
parent = self # to be accessible in the closure
@boxHolder.define_singleton_method(:<<) do |box|
box.setPositionWithinColumn(parent.moski_call)
super(box)
end
Примечание : define_singleton_method
является новым в Ruby 1.9, так что либо обновите, require 'backports/1.9.1/kernel/define_singleton_method'
, либо сделайте class << @boxHolder; define_method(:<<){ "..." } end
при использовании более старого Ruby.