irb에서 #inspect 출력을 잘라내려고합니다 (큰 출력을 MAX_LEN로 잘라야 함).irb (루비)에서 #inspect 출력을 잘라냅니다.
현재 모든 특정 개체에 대해 : inspect, : to_s 메서드를 재정의합니다.
다른 해결책이 있습니까?
- 변경 $ stdout?
- 다른 사람?
irb에서 #inspect 출력을 잘라내려고합니다 (큰 출력을 MAX_LEN로 잘라야 함).irb (루비)에서 #inspect 출력을 잘라냅니다.
현재 모든 특정 개체에 대해 : inspect, : to_s 메서드를 재정의합니다.
다른 해결책이 있습니까?
귀하의 해결책은 좋습니다.
어두운 마법이 없어 코드를 이해하기 쉽고 오류가 발생하기 쉽습니다.
IRB에있는 경우 irb 자체에서 monkeypatch를 정의하고 monkeypatches가 'load'를 통해 검사하는 파일을로드 할 수 있습니다. 이렇게하면 핵심 코드베이스에서 벗어나지 만 검사 할 모든 클래스에서 검사를 재정의하지 않고도 필요한 기능을 사용할 수 있습니다.
중첩 해시 등 해독하기가 어렵습니다. 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를 재정의 할 필요가 없습니다.
깨끗한 용액 인 경우 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+를 들어
, 헬퍼에 아래의 코드를 삽입/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
I에서 IRB의 소스를 확인하려는 경우 예외 메시지도 관리 할 수 있도록 BoringInspect
이라는 모듈을 통해 객체를 수정하십시오 (관련 클래스에 I include
).
+1 BoringInspect가 특히 적합하다고 생각합니다.) – horseyguy
@ 이노 스터 : 당신이 저를 잘 알고 있다는 것을 몰랐습니다! +1인가 -1인가? –
루비 코어에서 맹목적으로 말을 풀어 달라는 요청을 읽었습니다. 당신은 저녁 파티에 초대 할 사람이 아닙니다! * 하품 *;) – horseyguy