Imaginem que volem extendre un metode de la classe Adjunt.
# fitxer_original.rb
class Adjunt def metode_a_extendre puts "Codi original" end end
Si provem de rescriure el metode, el codi antic es perd, però el que ens interessa és executar-lo juntament amb el codi de la nostra extensió.
Volem aconseguir que literalment faci el següent:
class Adjunt def method_to_extend puts "Codi original" puts "Codi de la meva extesnió!" end end
El problema és que el codi original forma part d’una llibreria i el que volem és extendre la llibreria sense tocar-ne el codi.
La millor manera que he trobat és fent un alias_method que mantingui el codi origen i reescriure el metode afegint el nostre codi al final
# fitxer_extensio.rb
require 'fitxer_original' class Adjunt alias_method :metode_a_extendre_original, :metode_a_extendre def metode_a_extendre metode_a_extendre_original puts "Codi de la meva extesnió!" end end