2011-05-06 67 views
0

"".chomp返回""和系統命令返回空字符串如果其中不知道它。換句話說,下面的代碼將緩存「」,而不是再次檢查系統。紅寶石 - 空字符串爲零,以避免變量緩存

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

我想

  • 保持變量的緩存,而不是再次運行系統命令,如果發現。
  • 避免爲了運行系統命令兩次在代碼檢查.empty?

如果格格返回了空字符串爲零,它不會是一個問題。有什麼建議麼?

回答

3

創建一個緩存行調用的方法,在那裏檢查一個空字符串,如果是則返回nil,否則返回輸出。

def wkhtml_to_image_command 
    output = `which wkhtmltoimage-proxy`.chomp 
    output.empty? ? nil : output 
end 

@wkhtmltoimage ||= wkhtml_to_image_command 
0

作爲方法緩存的替代方案,這是一種更緊湊的單線程。

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

不像緩存方法那樣可讀,我必須承認。