Загрузка фидов / записей, получающих неопределенный метод '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

Вы также сможете увидеть эти сбои, многократно загружая фид в браузере, если он достаточно частый.

Другие вопросы по тегам