Project

General

Profile

Actions

Feature #4845

closed

Provide Class#cb_object_instantiated_from_literal(object)

Added by lazaridis.com (Lazaridis Ilias) about 11 years ago. Updated almost 11 years ago.

Status:
Rejected
Priority:
Normal
Target version:
-
[ruby-core:36799]

Description

(assuming that this is not a bug, but a speed tradeoff / known issue)

class String
alias_method :orig_initialize, :initialize
def initialize(val)
orig_initialize "OBSERVED: " + val
end
def my_method_test
print self.inspect, " test\n"
end
end

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"
oo_string.my_method_test
li_string.my_method_test

#OUTPUT
#=> 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)

Benefits:

  • minimal overhead if not used (C-level if *ptr available, call)
  • allows simple notification about new objects.
Actions

Also available in: Atom PDF