When using Proc#call to call a lambda function in Ruby, self always ends up with the value that it had when the function was defined, rather than the value it has w
self
You're looking for instance_eval, which evaluates a lambda in the context of the calling object.
>> $p = proc { self } => # >> class Dummy >> def test >> $p.call >> end >> >> def test1 >> instance_eval(&$p) >> end >> end >> d = Dummy.new => # >> d.test => main >> d.test1 => #