2011-03-07 3 views
0

그래서 내부 메소드 중 하나에 "log"라는 이름을 사용하는 모듈이 있습니다.메소드에 나쁜 이름을 생성 한 모듈

문제는이 모듈에 "확장 자체"줄이 있다는 것입니다. 레일즈 환경을로드 할뿐만 아니라 스크립트에서이 모듈을 호출하면 "log"키워드 (예 : Rails.application.config.paths.log 또는 config.paths.log)가 사용될 때마다 해당 모듈 내의 메소드가 점점 커지고 있습니다 원래 파일이 찾고 있던 것 대신에 호출된다.

MyModule.module_eval을 수행하고 메서드 이름을 변경하고 "log"라는 모듈의 모든 로컬 호출을 새 메서드로 라우트하는 방법이 있습니까?

그렇지 않으면 레일과이 모듈이 잘 어울리지 않습니다.

도움이 될 것입니다.

+0

모듈에서 메소드의 이름을 바꾸지 않는 이유는 무엇입니까? –

+0

모듈이 내 것이 아닙니다. 그러나 이름을 바꾸는 것이 여전히 가능하다면, 저에게 어떻게 말해주십시오 !!! 나는 그것을 감사하겠습니다! – schone

답변

0

답변을 찾았습니다. mod_eval을 사용하여 모듈 내부의 잘못된 메소드를 민영화했습니다.

NoSoSmartModule.module_eval do 
    private :log 
end 
관련 문제