Skip to content

Instantly share code, notes, and snippets.

@dinks
Created November 2, 2013 14:23
Show Gist options
  • Save dinks/7279379 to your computer and use it in GitHub Desktop.
Save dinks/7279379 to your computer and use it in GitHub Desktop.
instance_eval -- instance_exec -- class var
# encoding: utf-8
class Person
code = proc { puts self }
code2 = proc { |greet| puts "#{greet} #{self}" }
define_method :name do
self.class.instance_eval &code
end
define_method :name2 do
self.class.instance_exec "Hello", &code2
end
@@code = proc { puts self }
def n
self.class.instance_eval &@@code
end
end
class Developer < Person;end
Person.new.n # Person
Developer.new.n # Developer
Person.new.name # Person
Developer.new.name # Developer
Person.new.name2 # Hello Person
Developer.new.name2 # Hello Developer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment