Загрузка каналов / записей, получающих неопределенный метод 'records' для 0: ошибка fixnum - PullRequest
2 голосов
/ 16 января 2012

Я пытаюсь загрузить каналы из своего блога, но это приводит к ошибке в названном названии.

Сообщение об ошибке:

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 ]

6 голосов
/ 17 января 2012

При получении канала 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

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

0 голосов
/ 21 января 2012

Ну, похоже, что-то не так с моим кодом раньше.

Я пытался рандомизировать некоторые посты и использовал что-то вроде этого в представлении:

@feeds.shuffle!.first(5)

Для получения первых 5 случайных постов.

И чтобы это исправить, я просто заменил метод shuffle! на метод shuffle.

Теперь все работает отлично!

...