Slides

Reopening classes

class Fixnum
  def divisible_by? n
    self % n == 0
  end
end

4.divisible_by? 2 #=> true
4.divisible_by? 3 #=> false

Reopening classes

  • in Ruby, classes can be opened anywhere
  • possible to make additions or changes
class Student
  def last_name
    @last_name
  end
end

class Student
  def first_name
    @first_name
  end
end

Monkey Patching

  • Reopening a system or library class is known pejoratively as Monkey Patching
  • Very powerful & dangerous technique

With great monkey power comes great monkey responsibility.

  - Spider Monkey