# =?iso-8859-1?q?come\_si\_f=E0=3F?=

**URL:** <https://www.ruby-forum.com/t/iso-8859-1-q-come-si-f-e0-3f/98071>\
**Category:** IT\
**Created:** [July 12, 2006, 1:20pm UTC](https://www.ruby-forum.com/t/iso-8859-1-q-come-si-f-e0-3f/98071 "2006-07-12T13:20:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Giuliano\_U](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@Giuliano\_U](https://www.ruby-forum.com/u/Giuliano_U)\
**Post date:** [July 12, 2006, 1:20pm UTC](https://www.ruby-forum.com/t/iso-8859-1-q-come-si-f-e0-3f/98071/1 "2006-07-12T13:20:31Z")

</div>

Problemino:

Mi trovo nella condizione di dover tracciare i movimenti che un utente  
fà sul mio portale da quando entra a quando esce.  
Ho fatto un plugin che fà questo, ma non è come lo vorrei… il problema è che  
in ogni metodo che voglio tracciare sono obbligato a richiamare una  
funzione… ad esempio, ora  
è:

class User \< ActiveRecord::Base

```
acts_as_watched
 def self.login(uid, pwd) ...

   self.save_watch end def self.logout
   .... self.save_watch end

```

end

ma così è uno schifo… io vorrei dichiarare qualcosa del tipo:

acts\_as\_watched :login, :logout

e gestire la chiamata alla mia funzione in maniera trasparente.  
L’unico modo che mi viene in mente mentre stò scrivendo è quello di  
utilizzare un callback, ma questo poi significa che se all’interno del  
modello ridefinisco lo stesso callback vanifico tutto.  
Vi viene in mente nulla? magari con un alias di un callback?

---

<div class="post-metadata">

**Author:** ![Giuliano\_U](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@Giuliano\_U](https://www.ruby-forum.com/u/Giuliano_U)\
**Post date:** [July 12, 2006, 1:57pm UTC](https://www.ruby-forum.com/t/iso-8859-1-q-come-si-f-e0-3f/98071/2 "2006-07-12T13:57:16Z")

</div>

Ciao Giuliano,  
Non sono un esperto di Ruby, ma leggendo la tua richiesta mi è venuto  
in mente l’AOP  
([Aspect-oriented programming - Wikipedia](http://en.wikipedia.org/wiki/Aspect-oriented_programming)).  
Una ricerca mirata ha generato il link:  
[http://wiki.rubygarden.org/Ruby/page/show/AspectOrientedRuby/NotesRoughDrafts](http://wiki.rubygarden.org/Ruby/page/show/AspectOrientedRuby/NotesRoughDrafts)  
Mi pare che nell’articolo ci siano un paio di spunti interessanti.

Una successiva ricerca (Rails AOP) ha portato alla luce:  
[http://www.pixzone.com/blog/34/aop-in-ruby-on-rails/](http://www.pixzone.com/blog/34/aop-in-ruby-on-rails/)

Spero che la cosa possa tornare utile.

Saluti  
Pietro

Il 12/07/06, Giuliano U.[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

---

<div class="post-metadata">

**Author:** ![Giuliano\_U](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@Giuliano\_U](https://www.ruby-forum.com/u/Giuliano_U)\
**Post date:** [July 12, 2006, 5:48pm UTC](https://www.ruby-forum.com/t/iso-8859-1-q-come-si-f-e0-3f/98071/3 "2006-07-12T17:48:40Z")

</div>

On Jul 12, 2006, at 1:18 PM, Giuliano U. wrote:

> Problemino:
> 
> Mi trovo nella condizione di dover tracciare i movimenti che un  
> utente fà sul mio portale da quando entra a quando esce.  
> Ho fatto un plugin che fà questo, ma non è come lo vorrei… il  
> problema è che in ogni metodo che voglio tracciare sono obbligato a  
> richiamare una funzione… ad esempio, ora è:

[snip]

> L’unico modo che mi viene in mente mentre stò scrivendo è quello di  
> utilizzare un callback, ma questo poi significa che se all’interno  
> del modello ridefinisco lo stesso callback vanifico tutto.  
> Vi viene in mente nulla? magari con un alias di un callback?

Quel che ti serve e’ qui:

[http://api.rubyonrails.com/classes/ActiveRecord/Observer.html](http://api.rubyonrails.com/classes/ActiveRecord/Observer.html)  
[http://api.rubyonrails.com/classes/ActionController/Caching/](http://api.rubyonrails.com/classes/ActionController/Caching/)  
Sweeping.html

Se hai “Rails Recipes” c’e’ un capitolo dedicato a questo tipo di  
problema (#59, “Keeping track of who did what”)

–  
Stefano C.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![Giuliano\_U](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@Giuliano\_U](https://www.ruby-forum.com/u/Giuliano_U)\
**Post date:** [July 12, 2006, 3:21pm UTC](https://www.ruby-forum.com/t/iso-8859-1-q-come-si-f-e0-3f/98071/4 "2006-07-12T15:21:16Z")

</div>

— Giuliano U. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> Problemino:
> 
> Mi trovo nella condizione di dover tracciare i  
> movimenti che un utente fà sul mio portale da quando  
> entra a quando esce.  
> Ho fatto un plugin che fà questo, ma non è come lo  
> vorrei… il problema è che in ogni metodo che  
> voglio tracciare sono obbligato a richiamare una  
> funzione…

Non potresti farlo tramite un filter dichiarato in  
ApplicationController?

Tipo, il tuo metodo acts\_as genera al volo un metodo  
#trace\_user, e poi richiama before\_filter :trace\_user.  
All’interno di quello effettui poi le operazioni  
necessarie.

PS  
scusate per la “sòla” di ieri ☹

Chiacchiera con i tuoi amici in tempo reale!  
[Yahoo Search - Ricerca nel Web | Motore di Ricerca](http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com)

---

<div class="post-metadata">

**Author:** ![Giuliano\_U](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@Giuliano\_U](https://www.ruby-forum.com/u/Giuliano_U)\
**Post date:** [July 12, 2006, 6:01pm UTC](https://www.ruby-forum.com/t/iso-8859-1-q-come-si-f-e0-3f/98071/5 "2006-07-12T18:01:45Z")

</div>

Giuliano U. wrote:

> Problemino:
> 
> Mi trovo nella condizione di dover tracciare i movimenti che un utente fà sul mio portale da quando entra a quando esce.  
> Ho fatto un plugin che fà questo, ma non è come lo vorrei.[CUT]

scusami Giuliano sono iscritta alla ml di ruby ma a dire il vero non ho  
ancora avuto modo di cominciare a studiarlo…  
però volevo chiedere, quel che vuoi fare tu di solito non si fa con i  
cookies?  
ciao a tutti e scusate l’intromissione!  
alcina
