Skip to content

Instantly share code, notes, and snippets.

@shugo
Created November 19, 2009 06:57
Show Gist options
  • Save shugo/238604 to your computer and use it in GitHub Desktop.
Save shugo/238604 to your computer and use it in GitHub Desktop.
class Foo
A = "Foo::A"
@@b = "Foo::@@b"
end
module MyClassEval
A = "MyClassEval::A"
@@b = "MyClassEval::@@b"
def self.my_class_eval(klass, &block)
klass.class_eval(&block)
end
def self.my_class_exec(klass, &block)
klass.class_exec(&block)
end
end
module Bar
A = "Bar::A"
@@b = "Bar::@@b"
Foo.class_eval do
p [A, @@b, Module.nesting]
C = 1
end
MyClassEval.my_class_eval(Foo) do
p [A, @@b, Module.nesting]
end
Foo.class_exec do
p [A, @@b, Module.nesting]
end
MyClassEval.my_class_exec(Foo) do
p [A, @@b, Module.nesting]
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment