Ruby: provide real world examples when have you opened objects eigenclass and changed it

161 Views Asked by At

Coming from C# world I am used to thinking classes are immutable definitions of objects and that every object has fixed class.

I am trying to open my mind to possibilities of using

class << some_object
  def something_unique_to_this_object
    # code
  end
end

I am not talking about class << self.
I am talking about changing one or several object's class definition, but not all of them like class << self does.

In several months or almost a year of using ruby I have never found a situation when I thought oh good I can open this objects eigenclass and change it and leave majority of other objects of same class unchanged. Please provide real world examples when you used this.

1

There are 1 best solutions below

2
On

You say "not like class << self". Well, guess what - class/module methods are implemented exactly this way. There is a reason for the similarity in syntax. self inside a class definition refers to the class itself. Any class/module methods that you define are actually methods of the eigenclass of that class/module. Your specific class is just one instance of the class Class.


For other examples, look at something like rspec. How would you implement a double and add some methods to it dynamically? How would you stub a method of an existing object? Eingenclasses are an easy and perfect fit for it.


Other than more meta uses, I also sometimes find it comfortable while debugging. Like I can put a breakpoint, alter the behaviour of some object and continue after the breakpoint to see what happens. You might not want to affect all objects of that class or the object might be an instance of an anonymous class.