التابع TracePoint.new‎ في روبي

من موسوعة حسوب

يُعيد التابع new متعقبًا جديدًا غير مفعَّل افتراضيًّا.

راجع صفحة الصنف TracePoint للتعرف على الأحداث الممكنة ولمزيد من المعلومات.

يجب إعطاء كتلة للتابع، وإلا سيُطلق الاستثناء ArgumentError.

البنية العامة

new(*events) { |obj| block }  obj

المعاملات

events‎

أحداث يراد إنشاء تعقب لها.

القيمة المعادة

يعاد متعقبٌ جديدٌ للأحداث events.

أمثلة

من أجل تفعيل التعقب بعد إنشائه باستعمال التابع new، يجب عليك استخدام التابع enable:

trace = TracePoint.new(:call) do |tp|
    p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
end
#=> #<TracePoint:disabled>

trace.enable
#=> false

puts "Hello, TracePoint!"
# ...
# [48, IRB::Notifier::AbstractNotifier, :printf, :call]
# ...

إن أردت إلغاء التعقب، عليك استخدام التابع disable.

trace.disable

إذا لم يتم تضمين التابع trace في مرشح الأحداث (events filter) المعطاة، فسيُطلق الاستثناء RuntimeError.

TracePoint.trace(:line) do |tp|
    p tp.raised_exception
end
#=> RuntimeError: 'raised_exception' not supported by this event

إذا تم استدعاء التابع trace خارج كتلة، فسيُطلق الاستثناء RuntimeError.

TracePoint.trace(:line) do |tp|
  $tp = tp
end
$tp.lineno #=> access from outside (RuntimeError)

كما يُحظر الدخول من المهام الفرعية الأخرى.

انظر أيضًا

مصادر