Загрузка фидов / записей, получающих неопределенный метод 'records' для 0: ошибка fixnum
Я пытаюсь загрузить каналы из моего блога, но это приводит к ошибке в названии.
Сообщение об ошибке:
NoMethodError (undefined method `entries' for 0:Fixnum):
app/controllers/pages_controller.rb:6:in `home'
Вот как я делаю:
Я создал файл в lib
папка называется blog_feeds.rb
, который содержит только следующее:
module BlogFeeds
require 'feedzirra'
def load_feeds
feeds = Feedzirra::Feed.fetch_and_parse('http://blog.shigotodoko.com/feed')
end
end
И строка № 6 для ошибки:
@feeds = load_feeds.entries
Обратите внимание, что эта ошибка возникает только иногда, а не всегда.
Итак, есть идеи о том, что здесь происходит?
Спасибо!
2 ответа
Ну, кажется, что-то было не так с моим кодом раньше.
Я пытался рандомизировать некоторые посты и использовать что-то вроде этого в представлении:
@feeds.shuffle!.first(5)
Для того, чтобы получить первые 5 случайных сообщений.
И чтобы это исправить, я просто заменил shuffle!
метод для shuffle
метод.
Теперь все работает отлично!
При получении канала Feedzirra будет возвращать код состояния HTTP вместо объекта, содержащего записи канала, если выборка HTTP приводит к ошибке (т.е. не к 200 или 3XX).
Чтобы изящно обработать это условие, проверьте тип объекта, который вы возвращаете из fetch_and_parse, заключив его в нечто вроде:
unless feeds.is_a?(Fixnum)
# work with the feeds object
else
# handle the error condition, retry, etc.
end
Вы также сможете увидеть эти сбои, многократно загружая фид в браузере, если он достаточно частый.