# Refinements

**URL:** <https://www.ruby-forum.com/t/refinements/227319>\
**Category:** IT\
**Created:** [March 11, 2013, 11:26am UTC](https://www.ruby-forum.com/t/refinements/227319 "2013-03-11T11:26:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![lucapette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/58f4c7/32.png) [@lucapette](https://www.ruby-forum.com/u/lucapette)\
**Post date:** [March 11, 2013, 11:26am UTC](https://www.ruby-forum.com/t/refinements/227319/1 "2013-03-11T11:26:55Z")

</div>

Ciao a tutti,  
dopo l’uscita di Ruby 2.0 mi sono finalmente riuscito ad avvicinare ai  
refinements.  
Dopo essermi letto gli articoli di Katz e il rebuttal di Nutter,  
confermo i miei dubbi iniziali.

Faccio una domanda un po’ naive e poi ci lavoro sopra: a cosa servono i  
refinements? I moduli non erano simpatici abbastanza?

Il problema principale (che coinvolge per una minima parte della  
community) che i refinement sono inutili in situazione di concorrenza,  
se non addirittura deleteri. La possibilit, di fatto, di cambiare un  
blocco a runtime che rendono disponibile l’esatto contrario di una  
architettura concorrente sensata.

La gestione del loro scoping inoltre oltremodo confusa, piuttosto  
facile creare situazioni in cui il metodo refined non funziona o altera  
funzionalit core.

A me sembra che si sia semplicemente cercato di codificare il  
monkey-patching, che comunque una pratica pessima da adottare a meno  
che non si sia costretti.  
Che ne dite?

PS. non un post da “old geezer”, non sono il tipo, che proprio non  
capisco.

–  
Luca P.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![lucapette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/58f4c7/32.png) [@lucapette](https://www.ruby-forum.com/u/lucapette)\
**Post date:** [March 11, 2013, 2:27pm UTC](https://www.ruby-forum.com/t/refinements/227319/2 "2013-03-11T14:27:33Z")

</div>

Il 11 marzo 2013 11:26, Luca P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> Ciao a tutti,  
> dopo l’uscita di Ruby 2.0 mi sono finalmente riuscito ad avvicinare ai  
> refinements.  
> Dopo essermi letto gli articoli di Katz e il rebuttal di Nutter, confermo i miei  
> dubbi iniziali.

[…]

> PS. non un post da “old geezer”, non sono il tipo, che proprio non capisco.

non credo che fugher tutti i tuoi dubbi, ma questo a me ha chiarito  
parecchio le idee:  
[http://confreaks.com/videos/1275-rubyconf2012-ruby-2-0-on-rails](http://confreaks.com/videos/1275-rubyconf2012-ruby-2-0-on-rails)

michele.

---

<div class="post-metadata">

**Author:** ![lucapette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/58f4c7/32.png) [@lucapette](https://www.ruby-forum.com/u/lucapette)\
**Post date:** [March 11, 2013, 3:12pm UTC](https://www.ruby-forum.com/t/refinements/227319/3 "2013-03-11T15:12:32Z")

</div>

On Mar 11, 2013, at 11:26 AM, Luca P. wrote:

> A me sembra che si sia semplicemente cercato di codificare il monkey-patching,  
> che comunque una pratica pessima da adottare a meno che non si sia costretti.  
> Che ne dite?

Come dici tu, a volte si e’ costretti. in questi casi, poter confinare  
ill mio patch in un modulo non e’ cosa bella?

Ciao

D
