# Come avere ActiveSupport::Notification a inizio/fine?

**URL:** <https://www.ruby-forum.com/t/come-avere-activesupport-notification-a-inizio-fine/219471>\
**Category:** IT\
**Created:** [May 3, 2012, 11:58pm UTC](https://www.ruby-forum.com/t/come-avere-activesupport-notification-a-inizio-fine/219471 "2012-05-03T23:58:17Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gurdipe\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/b77776/32.png) [@Gurdipe\_D](https://www.ruby-forum.com/u/Gurdipe_D)\
**Post date:** [May 3, 2012, 11:58pm UTC](https://www.ruby-forum.com/t/come-avere-activesupport-notification-a-inizio-fine/219471/1 "2012-05-03T23:58:17Z")

</div>

Eil,

stavo smanettando con un simpatico plugin per rails per tracciare come  
viene speso il tempo durante una richiesta, e mostrarlo direttamente  
in browser.

La cosa funzionicchia ma ho un problema: vorrei tracciare quello che  
succede a diversi livelli di profondit es:

controller  
render tutto  
render contenuto vista  
render partial  
render altro partial  
render layout

etc…

In teoria ActiveSupport ha le notification per questo scopo, il  
problema gli eventi vengono mandati solo alla fine, per quel che  
capisco io.

Esempio, voglio tracciare X durante il rendering della pagina, vorrei  
fare, con un api ipotetica

```
  count = nil
  ActiveSupport::Notifications.subscribe /render/, :start do

```

|name, id, payload|  
count = 0  
start\_tracking do |an\_x| count+=1 end  
end

```
  ActiveSupport::Notifications.subscribe /render/, :end do |name,

```

id, payload|  
puts “X invoked #{count} times”  
stop\_tracking  
end

il problema che l’API di ActiveSupport::Notification mi manda gli  
event quando sono gi finiti (a intervallo) e quindi non posso  
correlarli direttamente con quello che traccerei in #track\_xs (nota:  
alcuni eventi invece sono apparentemte fatti come dico io, tipo quelli  
di start/end action processing)

A parte un monkey patching brutale di #subscribe qualcuno ha idee  
alternative?  
C’ un modo ovvio di fare questa cosa che io non ho capito?
