首页 > 解决方案 > 获取状态时出错:nil:NilClass 的未定义方法“文本”

问题描述

我对 Ruby 一无所知,在下面找到了报告 AWS 状态的代码

https://gist.github.com/ktheory/1604786

  /1.rb https://status.aws.amazon.com/rss/a4b-us-east-1.rss
    Error fetching status: undefined method `text' for nil:NilClass

ruby -v ruby​​ 2.5.1p57(2018-03-29 修订版 63029)[x86_64-linux]

latest_status = xml_doc.css("item title").first.text
print lastest_status
in `<main>': undefined method `text' for nil:NilClass (NoMethodError)

标签: ruby

解决方案


如果first出现空并返回nil,您不能只是犯错误,否则您的代码将崩溃。您需要谨慎行事:

latest_status = xml_doc.css("item title").first&.text

或者,如果您使用的是旧版本的 Ruby 并拥有 Rails 的 ActiveSupport:

latest_status = xml_doc.css("item title").first.try(:text)

否则你将需要以艰难的方式做到这一点:

latest_status = xml_doc.css("item title").first
latest_status &&= latest_status.text

您可能应该弄清楚为什么该选择器不起作用,因为它可能不正确并且最终什么也没返回。


推荐阅读