Skip to content

Instantly share code, notes, and snippets.

@psyomn
Last active December 27, 2015 05:39
Show Gist options
  • Select an option

  • Save psyomn/7275528 to your computer and use it in GitHub Desktop.

Select an option

Save psyomn/7275528 to your computer and use it in GitHub Desktop.
Evil Eval
class Person
end
person = Person.new
Person.instance_eval "attr_accessor :name"
person.name = "bobby"
puts person.name
person.instance_eval "def greet; puts 'hello ' end"
person.greet
person2 = Person.new
begin
person2.greet
rescue
puts "Yep only object person has this behavior"
end
puts "Type in a method: "
person.instance_eval $stdin.gets.chomp
p person.methods - Object.instance_methods
# Output:
# bobby
# hello
# Yep only object person has this behavior
# Type in a method: def methy; 'hello' end
# [:greet, :methy, :name, :name=]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment