Evaluating Inside a Binding

suggest change

Ruby keeps track of local variables and self variable via an object called binding. We can get binding of a scope with calling Kernel#binding and evaluate string inside a binding via Binding#eval.

b = proc do
  local_variable = :local
  binding
end.call

b.eval "local_variable" #=> :local

—``` def fake_class_eval klass, source = nil, &block class_binding = klass.send :eval, “binding”

if block class_binding.local_variable_set :_fake_class_eval_block, block class_binding.eval "_fake_class_eval_block.call" else class_binding.eval source end end

class Example end

fake_class_eval Example, <<-BLOCK def self.foo :foo end BLOCK

fake_class_eval Example do def bar :bar end end

Example.foo #=> :foo Example.new.bar #=> :bar ```

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents