Je suis en train d'écrire un module qui remplace une méthode d'instance dans la classe, il est inclus dansComment un module écrase-t-il une méthode dans la classe parente d'une classe dans laquelle il est inclus?
Cela ne fonctionne pas.
require 'active_support'
class Foo
def bar
"bar"
end
end
module NewFoo
extend ActiveSupport::Concern
included do
alias __bar__ bar
end
def bar
"new " + __bar__
end
end
class Baz < Foo
include NewFoo
end
Mon attente est que Baz.new.bar.should eql "new bar"
mais je reçois un undefined local variable or method '__bar__'
Erreur.
J'ai essayé des variantes de ce qui précède, y compris l'ancienne voie via def self.include(base)...
en vain.
Des pointeurs?
Doh. Nous regardions notre écran depuis trop longtemps. Thnx. –
@hakanensari: Je connais le sentiment. Une fois, j'ai passé une matinée entière à me défouler avec une logique de bouclage compliquée, essayant de trouver la manière la plus élégante de faire une «injection» qui fait la même chose pour tous les éléments sauf le dernier. Puis un ami aperçoit un aperçu du code et dit: "Vous * savez * que c'est juste" Array # rejoindre ", n'est-ce pas?" –