Ruby · Avançado · Inglês · Técnico
refinements
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 # => 300Exemplos
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