2012-04-04 3 views
0

Windows에서 Rails 2.3이 설치된 Ruby 1.8.7에서 Monkey patch strftime이 필요합니다. 구성 \ 이니셜 라이저에서 나는이 time_patch.rb 파일 (code below)을 넣어하지만 따기하지 않는 것 :Monkey Patching Time.strftime이 Time 클래스에 의해 선택되지 않았습니다.

if RUBY_PLATFORM =~ /mingw32|mingw64|mswin32|mswin64/ 

    class Time 
    alias_method :original_strftime, :strftime 
    def strftime(fmt) 
     hour12 = "%2d" % ((hour + 11) % 12 + 1) 
     original_strftime(fmt.gsub(/%l/, hour12)) 
    end 
    end 

end 

을 내가 def blorping에 방법을 이름을 변경하고, 레일 콘솔에서 Time.methods을했지만 새로운 보지 않았다 방법.

작동하려면 무엇을해야합니까?

+0

RUBY_PLATFORM은 무엇입니까? – klochner

+0

@klochner 'def blorping'이있는 i386-mingw32 – ScottJShea

+2

입니다. . . ', 시도 Time.now.methods – klochner

답변

1

Time.methods을 사용할 때 클래스 방법을 확인 중이므로 Time.instance_methods과 같은 것으로 올바르게 패치되었는지 확인하십시오.

+0

감사합니다! 이 환경/테스트와 관련하여 노출 된 다른 문제 – ScottJShea

+1

Ruby 1.9에서'Time.instance_method (: strftime) .source_location'을 검사하여 메소드 정의 위치를 ​​확인할 수도 있습니다. 내부 코드는'nil'을 리턴해야합니다.이 루틴은 Ruby VM에서 C로 구현되었을 것입니다.하지만 소스 위치를 보여줄 것입니다. – tadman

+0

Ruby 1.8.7에서'source_location'을 사용할 수 없다고 생각합니다. – ScottJShea