2011-03-07 2 views
0

J'ai donc un module qui a utilisé le nom "log" pour l'une de ses méthodes internes.module qui a généré une mauvaise appellation pour une méthode

Le problème est, que ce module a une ligne "extend self". Si j'appelle ce module dans un script et charge l'environnement des rails, à chaque fois que le mot-clé "log" est utilisé (ie Rails.application.config.paths.log, ou config.paths.log), la méthode dans ce module est invoqué à la place de ce que recherchait le fichier d'origine.

Y a-t-il un moyen de faire un MyModule.module_eval et en quelque sorte renommer le nom de la méthode et router tous les appels locaux dans ce module qui a appelé "log" dans la nouvelle méthode? Sinon, Rails et ce module ne sont pas sympas ensemble.

Toute aide serait appréciée!

+0

Pourquoi ne pas simplement renommer la méthode dans votre module? –

+0

le module n'est pas le mien. Mais s'il est encore possible de le renommer, s'il vous plaît dites-moi comment !!! J'apprécierais! – schone

Répondre

0

J'ai trouvé une réponse. J'ai privatisé la mauvaise méthode dans le module en utilisant module_eval

NoSoSmartModule.module_eval do 
    private :log 
end 
Questions connexes