Il modulo CoreExtensions
contiene tutte le estensioni alla Ruby Core Library. Ogni estensione è normalmente suddivisa per tipo di libreria ed infine per scopo. Ad esempio, il modulo ActiveSupport::CoreExtensions::Integer::EvenOdd
contiene le estensioni utili all'analisi della parità di un numero appartenente alla classe Integer
di Ruby.
module ActiveSupport #:nodoc:
module CoreExtensions #:nodoc:
module Integer #:nodoc:
# ...
end
end
end
La modalità con cui queste estensioni sono raggruppate e mixate all'interno della core library merita un po' di attenzione. Ogni metodo è raggruppato per scopo all'interno di un modulo che rispecchia la gerarchia della core library. Le estensioni sono poi mixate all'interno della libreria in un'unica soluzione, in un file chiamato con lo stesso nome del componente da estendere.
Ad esempio, nella cartella integer
sono disponibili 3 estensioni chiamate EvenOdd
, Inflections
e Time
. Questi mixin sono integrati all'interno della classe Integer
di Ruby nel file integer.rb
come segue:
require 'active_support/core_ext/integer/even_odd' require 'active_support/core_ext/integer/inflections' require 'active_support/core_ext/integer/time' class Integer #:nodoc: include ActiveSupport::CoreExtensions::Integer::EvenOdd include ActiveSupport::CoreExtensions::Integer::Inflections include ActiveSupport::CoreExtensions::Integer::Time end
Questa struttura, estremamente ordinata, consente una consultazione immediata ed agevole delle estensioni disponibili. Vale la pena dedicare un po' di tempo a conoscere ActiveSupport
navigando tra le cartelle disponibili.