ExpertiDict

Ruby · Avançado · Inglês · Técnico

refinements

/rɪˈfaɪnmənts/substantivo

Mecanismo que altera uma classe só dentro de um escopo que ativa a mudança com using, em vez de globalmente como no monkey patching.

Onde usar

Permite estender String ou Integer com segurança dentro de um arquivo ou módulo. É a alternativa a patches globais, mas tem limitações em metaprogramação, como o respond_to?, que não enxerga refinamentos.

Em código

module Tempo
  refine Integer do
    def minutos = self * 60
  end
end
using Tempo
puts 5.minutos  # => 300

Exemplos

We use a refinement so the patch stays inside this file.

Usamos um refinement para o patch ficar restrito a este arquivo.

The refinement only applies after the using call.

O refinement só vale depois da chamada de using.

Cuidado

O using vale do ponto onde aparece até o fim do arquivo ou módulo; não é global nem dinâmico.

Sinônimos

refinamentos

Antônimos

monkey patching

Veja também

Todos os termos de Ruby