Ich versuche herauszufinden, wie Sie mit der TracePoint-API von Ruby die Definition und nachfolgende Neudefinitionen einer bestimmten Klasse (z. B. 'Resolv') auffangen können. Ich bin zu stoppen alle Klassendefinitionen können mit:Ruby TracePoint: Wie definiere ich die Definition einer bestimmten Klasse?
TracePoint.trace(:class) do |tp|
require 'pry'; binding.pry # for example
end
Aber ich bin nicht in der Lage zu filtern entweder :class
oder :end
Parameter, so dass ich konnte Falle nur die Resolv
Klasse. Das -Objekt hat ein defined_class
-Attribut, aber das enthält wer zum Zeitpunkt der Klassendefinition selbst (das war nil
, aka (main)
), und nicht die Klasse, deren Definition im Begriff ist, verarbeitet werden. Ich konnte auch nicht herausfinden, welche Datei und welche Zeile verarbeitet wurden. Dort ist eine binding
Variable, aber es enthielt keine Variablen.
Wie kann ich das tun?
Does not 'tp.lineno' und' Sie die Zeile tp.path' geben und Datei? – SteveTurczyn
Ja, du hast Recht. Ich weiß nicht, wie ich das vermisst habe. Vielen Dank. –