为什么这个Ruby语句会抛出异常? (阵列/ BOOLS)

时间:2010-08-04 13:41:41

标签: ruby-on-rails ruby arrays exception cron

我不是红宝石的家伙,我只是在电视上播放一个。我必须修改某人的旧Cron作业以下拉一些JSON并将其转换为对象。

这是代码

raw_json = Net::HTTP.get(URI.parse("url removed to protect the innocent"))

tags = ActiveSupport::JSON.decode(raw_json)

puts tags.count

tags.count将准确地跟踪为5,但是THAT LINE会立即导致崩溃,如下所示:

5 #the accurate count!
rake aborted!
undefined method `count' for false:FalseClass

什么是折衷?

4 个答案:

答案 0 :(得分:1)

所以我不知道这里发生了什么,但是JSON.decode 应该给你一个哈希,它没有count方法。它确实有一个尺寸方法

tags.size

如果这不起作用,请尝试执行p标记,或者放置tags.class.name以尝试找出您正在使用的内容

答案 1 :(得分:1)

raw_json的内容是什么?似乎正在发生的事情是ActiveSupport::JSON#decode返回false(因此undefined method 'count' for false:FalseClass)。我认为JSON#decode仅在给定空字符串时返回false,这意味着HTTP#get返回空字符串。检查raw_json,看看它是否包含您的期望。

答案 2 :(得分:0)

显然标签是假的,这可能意味着你的Net :: HTTP.get失败了(我猜你的网址是错误的)。 尝试打印标签以查看它是什么。 (无论如何,我猜你应该使用有效的URI)

答案 3 :(得分:0)

问题在于:

>> ActiveSupport::JSON::decode("")
=> false
>> ActiveSupport::JSON::decode("false")
=> false

这是一种非常奇怪的行为。