(assuming that this is not a bug, but a speed tradeoff / known issue)
alias_method :orig_initialize, :initialize
orig_initialize "OBSERVED: " + val
print self.inspect, " test\n"
oo_string = String.new("The OO String")
li_string = "The Literal String"
print "Class: ", oo_string.class, " - content: ", oo_string, "\n"
print "Class: ", li_string.class, " - content: ", li_string, "\n"
#=> Class: String - content: OBSERVED: The OO String
#=> Class: String - content: The Literal String
#=> "OBSERVED: The OO String" test
#=> "The Literal String" test
The li_string is an object of class String and responds to the added method "my_method_test".
But: the initialize method of the modified String class was not called during instantiation.
Is there any chance that this will be changed, thus the "initialize" method is called (if implemented)?
If not, the suggestion would be:
- provide a call-back Class#cb_object_instantiated_from_literal(object) (or similar)
- minimal overhead if not used (C-level if *ptr available, call)
- allows simple notification about new objects.