我最近開始做一個寶石爲我的項目之一,但是當它到達的某一部分,而運行它只是停止執行,並向右走到底,並返回一個空數組。問題是在parse_results功能插件停止執行代碼而不產生錯誤
def parse_results(result)
puts result
result_hash = Hash.new
result_hash["url"] = result.id
result_hash["score"] = result.rule_groups["SPEED"].score
result_hash["rule_results"] = Hash.new
# it cuts out right as it tries this puts command below, nothing is output
puts result_hash["rule_results"]["AvoidLandingPageRedirects"].localized_rule_name
rule_result_names = ["AvoidLandingPageRedirects", "EnableGzipCompression", "LeverageBrowserCaching", "MainResourceServerResponseTime", "MinifyCss", "MinifyHTML", "MinifyJavaScript", "MinimizeRenderBlockingResources", "OptimizeImages", "PrioritizeVisibleContent"]
rule_result_names.each do |rule|
puts rule
result_hash["rule_results"][rule] = Hash.new
result_hash["rule_results"][rule]["name"] = result.formatted_results.rule_results[rule].localized_rule_name
result_hash["rule_results"][rule]["impact"] = result.formatted_results.rule_results[rule].rule_impact
result_hash["rule_results"][rule]["advice"] = result.formatted_results.rule_results[rule].format
end
puts result_hash
return result_hash
end
這種嘗試做,即使陣列樹立優良的.each
一部分時,它會切出之前。任何線索,爲什麼會發生這種情況?網址和分數都設置得很好。它正在通過來自Google的Json/Hash對象,這是有效的。這也是不尋常的,因爲這些命令在我用pry進行調試時工作得很好,至少現在代碼截斷了puts命令。讓我知道是否需要其他任何東西。提前致謝!
有時奇怪的錯誤,錯誤在開發的寶石是因爲你沒有加載你的寶石的正確版本。你確定你實際上是加載了你的寶石的最新版本,而不是一些測試代碼或以前的版本,因爲你忘了正確提交代碼。除非您在異常處理程序中運行該方法,否則方法通常不會在沒有錯誤的情況下停止執行中間流。 – Casper
@Casper據我所知,我根本沒有更新它的版本,只是堅持默認的0.1.0,並一直在使用它。這聽起來像一個錯誤,但它會發生。我會在明天嘗試更新版本。如果我有相互矛盾的版本,這也會發生嗎? – KJS
我的意思是你確定你的程序正在加載你認爲正在加載的gem。但從你的其他反應看來,它正在加載正確的。一個簡單的測試是修改你的寶石,並在代碼中添加一行例如'puts'TEST「',看看你的程序是否打印這行。 – Casper