Why can't I see @obj.instance_variables in Object when method_missing is invoked?
module Arena
class Place
def initialize obj
@obj = obj
method_missing_in_obj
@obj.instance_variable_set(:@unit, '10')
puts @obj.instance_variables
yield @obj
end
def method_missing_in_obj
def @obj.method_missing method, *args, &blk
puts @obj.instance_variables
super
end
self
end
end
end
Arena::Place.new(Object.new) do |obj|
puts obj.instance_variable_get(:@unit)
puts obj.foo
end
$> ruby test_me.rb:
=> @unit
=> 10
=> in `method_missing': undefined method `foo' for #<Object:0x007fd89b1c96e0 @unit="10"> (NoMethodError)