ruby - 获取状态时出错: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)
解决方案
如果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
您可能应该弄清楚为什么该选择器不起作用,因为它可能不正确并且最终什么也没返回。
推荐阅读
- javascript - CodeSandbox 中的切换选项卡,快捷键/热键
- node.js - 是否可以像在 Python 中使用 Pandas 一样对 NodeJS 中的函数进行矢量化?
- haskell - 我可以使用什么函数对其他函数进行多次嵌套调用?
- python - 对于每个月,在 python 中将值重新缩放到该月
- sql - 循环遍历Oracle中拆分的字符串
- css - Firefox 上字体 Exo 2 的字体粗细问题
- discord - 如何使用 discord.py 在类别中创建频道
- reactjs - React-redux 项目不渲染组件
- sql - Postgres to_date() 函数返回错误的年份
- python - 如何找到时间序列中最先出现的极端类型