2011-05-06 3 views
0

"".chomp""을 반환하고 시스템 명령은 인 경우을 모르는 경우 빈 문자열을 반환합니다. 즉, 아래의 코드는 ""캐시하고 시스템을 다시 검사하지 않습니다.ruby ​​- 가변 캐싱을 피하기 위해 빈 문자열

@wkhtmltoimage ||= `which wkhtmltoimage-proxy`.chomp 

내가 발견하는 경우

  • 다시 시스템 명령을 실행하지 않는, 변수 캐싱을 유지하고 싶습니다. 씹는는 빈 문자열에 전무를 반환하는 경우 위해 코드에서 두 번 시스템 명령을 실행
  • 피하기는 .empty?

을 확인하기 위해, 그것은 문제가되지 않을 것입니다. 어떤 제안?

답변

3

캐싱 라인에서 호출하는 메소드를 만들고 빈 문자열을 체크 인하 고 nil이 있으면 리턴하고 그렇지 않으면 출력을 리턴하십시오.

0

이 방법 캐싱의 대안으로, 이것은보다 콤팩트 한 한 줄입니다.

@wkhtmltoimage ||= (c=`which wkhtmltoimage-proxy`.chomp).empty? ? nil : c 

메서드 반환을 캐싱하는 것이 읽기 쉽지 않습니다.

관련 문제