17.14. Wykorzystywanie wielu narzędzi analitycznych jednocześnie

Problem

Chcemy wykorzystywać jednocześnie dwa narzędzia analityczne, na przykład moduł profilowania (profiler) i moduł śledzenia (tracer). Jednak kiedy jedno z narzędzi wywoła metodę set_trace_func, nadpisuje metodę trace ustawioną przez drugie z narzędzi.

Rozwiązanie

Można zmodyfikować metodę set_trace_func w taki sposób, by była w niej zapisana tablica funkcji śledzących zamiast jednej funkcji. Oto biblioteka multitrace.rb, która umożliwia wykonanie takiej operacji:

# multitrace.rb $TRACE_FUNCS = [] alias :set_single_trace_func :set_trace_func def set_trace_func(proc) if (proc == nil) $TRACE_FUNCS.clear else $TRACE_FUNCS << proc end end trace_all = Proc.new do |event, ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.