我最近开始做一个宝石为我的项目之一,但是当它到达的某一部分,而运行它只是停止执行,并向右走到底,并返回一个空数组。问题是在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