Ruby  »  Articoli  »  Rails 

Un semplice plugin 'act as...' per Ruby on Rails

di: Sandro Paganotti     07 Aprile 2009

Se esploriamo Rails Lodge, uno dei più famosi repository di plugins per Rails, noteremo che una buona percentuale delle estensioni presentate hanno un titolo del tipo: 'Acts As ...'.

I primi due esempi di questo strano e originale "behavior" sono da ricercarsi in 'Acts As List' e 'Acts As Tree', all'epoca non propriamente plugins (ora lo sono diventati) ma parte integrante del core di Rails.

Il concetto base che sottende tutti questi prodotti, suggerito proprio dalla particella 'Acts As', (cioè 'Agisci Come'), è quello di 'trasformare' il funzionamento di uno (o alcuni) models della nostra applicazione facendoli agire come liste (nel caso di Acts As List), come valute (Acts As Currency), o come un qualiasi altro comportamento voluto, attraverso l'utilizzo di una 'macro' che deve essere inserita all'interno dell'oggetto interessato come nell'esempio sottostante:

class Todo < ActiveRecord::Base
  acts_as_list
end

Nella pratica acts_as_list è una funzione che il plugin inietta (attraverso il suo init.rb) all'interno della classe ActiveRecord::Base rendendola di fatto disponibile a tutti i models.

Tale funzione ha il solo scopo di rendere disponibili, alla classe che la implementa, tutta una serie di metodi caratteristici di un particolare oggetto (ad esempio acts_as_list aggiunge metodi quali higher_item, move_lower, etc.) nonché di modificare alcuni dei comportamenti classici di un model (ad esempio Acts As Paranoid sovrascrive il metodo destroy della classe che lo implementa impedendo il cancellamento fisico di ogni suo record).

La chiave di questo funzionamento risiede nell'utilizzo sapiente dei Mixins, oggetto della prima sezione di questo articolo.

Guide Ruby

Guida ActiveSupport

Una panoramica sulle funzionalità più importanti di ActiveSupport:...

Guida Ruby On Rails 2

Scoprire le novità di Ruby on Rails 2, memorizzare i dati con...

Guida Ruby e il Web

Un percorso alla scoperta delle potenzialità offerte da Ruby nella...

Altre guide

Newsletter @Ruby

Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto