success.rb works by using the block as is. self.instance_eval &block
I’m rewriting the block source code using ruby2ruby and then passing
that as a string to self.instance_eval. fail.rb contains the simple
failure case. The ary var is out of scope.
Is there a way to retain the
original scope of the block? I want to pass a string to instance_eval
and eval it within the scope of the block.
instance_eval by definition evaluates within the scope of the
receiving instance. You don’t need that here. You could just use eval
with a binding:
eval %(ary << 1; puts 'complete'), block.binding