¿Por qué incluir este módulo no anula un método generado dinámicamente?

Estoy tratando de anular un método generado dinámicamente al incluir un módulo.

En el siguiente ejemplo, una asociación Ripple agrega unrows= Método de la tabla. Quiero llamar a ese método, pero también hacer algunas cosas adicionales después.

Creé un módulo para anular el método, pensando que el módulorow= podría llamarsuper para usar el método existente.

class Table

  # Ripple association - creates rows= method
  many :rows, :class_name => Table::Row

  # Hacky first attempt to use the dynamically-created
  # method and also do additional stuff - I would actually
  # move this code elsewhere if it worked
  module RowNormalizer
    def rows=(*args)
      rows = super
      rows.map!(&:normalize_prior_year)
    end
  end
  include RowNormalizer

end

Sin embargo, mi nuevorows= nunca se llama, como lo demuestra el hecho de que si levanto una excepción dentro de él, no pasa nada.

Sé que el módulo se está incluyendo, porque si pongo esto en él, mi excepción aumenta.

      included do
        raise 'I got included, woo!'
      end

Además, si en lugar derows=, el módulo definesomethingelse=, ese método es invocable.

¿Por qué mi método de módulo no anula el generado dinámicamente?

Respuestas a la pregunta(3)

Su respuesta a la pregunta