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.