2010-12-08 1 views

답변

1

귀하의 해결책은 좋습니다.

어두운 마법이 없어 코드를 이해하기 쉽고 오류가 발생하기 쉽습니다.

1

IRB에있는 경우 irb 자체에서 monkeypatch를 정의하고 monkeypatches가 'load'를 통해 검사하는 파일을로드 할 수 있습니다. 이렇게하면 핵심 코드베이스에서 벗어나지 만 검사 할 모든 클래스에서 검사를 재정의하지 않고도 필요한 기능을 사용할 수 있습니다.

1

중첩 해시 등 해독하기가 어렵습니다. awesome_print를 사용해보세요.

require 'ap' 

module IRB 
    class Irb 
    def output_value 
     ap @context.last_value 
    end 
    end 
end 

이 IRB에서 해독하기 쉬운 많은 데이터와 객체를 만든다 : 당신은 당신의 .irbrc에 다음과 같은 배치하여 IRB의 기본 출력 포맷 할 수 있습니다.

awesome_print를 사용하지 않는 경우에도 동일한 기술을 사용하여 출력을자를 수 있으므로 코드에서 to_s를 재정의 할 필요가 없습니다.

5

깨끗한 용액 인 경우 gem install hirb. hirb 너무 오래 걸리면 irb의 반환 값이 표시됩니다.

당신은 IRB monkeypatch하려면

: 그것은 해킹 및 AP와 hirb이 필요한 것처럼 언제든지 보석을 나누기 때문에이 사용하지 않는 것이 좋습니다

module IRB 
    class Irb 
    def output_value 
    @context.last_value.to_s.slice(0, MAX_LEN) 
    end 
    end 
end 

.

irke를 monkeypatching하는 대신, 확장하려고하는 irb 대안 인 ripl을 사용하는 것이 좋습니다. RIPL 플러그인으로 위가 될 것이다 :

이 플러그인으로
require 'ripl' 
module Ripl::SlicedInspect 
    def format_result(result) 
    result_prompt + result.inspect.slice(MAX_LEN) 
    end 
end 
Ripl::Shell.send :include, Ripl::SlicedInspect 

, 당신은 필요에 따라 필요하거나 추가 할 수 있습니다 귀하의 ~/.riplrc 당신은 항상 그것을 사용하려는 경우. 레일 3.1.1+를 들어

1

, 헬퍼에 아래의 코드를 삽입/irb_helper.rb

module IRB 
    class Irb 
    MAX_LEN = 10000 

    def output_value 
     if (@context.inspect_last_value.length > MAX_LEN) 
     printf @context.return_format, "#{@context.inspect_last_value[0..MAX_LEN]} <- Truncated" 
     else 
     printf @context.return_format, @context.inspect_last_value 
     end 
    end 
    end 
end 

당신은 더 출력을 사용자 정의 때로는 https://github.com/Ruby/Ruby/blob/trunk/lib/irb.rb

0

I에서 IRB의 소스를 확인하려는 경우 예외 메시지도 관리 할 수 ​​있도록 BoringInspect이라는 모듈을 통해 객체를 수정하십시오 (관련 클래스에 I include).

+0

+1 BoringInspect가 특히 적합하다고 생각합니다.) – horseyguy

+0

@ 이노 스터 : 당신이 저를 잘 알고 있다는 것을 몰랐습니다! +1인가 -1인가? –

+0

루비 코어에서 맹목적으로 말을 풀어 달라는 요청을 읽었습니다. 당신은 저녁 파티에 초대 할 사람이 아닙니다! * 하품 *;) – horseyguy