Railscasts 168 - Feedjira не работает

Я пытаюсь создать приложение RoR, которое анализирует RSS-канал, а затем ищет в нем ключевые слова. Чтобы добавить RSS, я следую этому: http://railscasts.com/episodes/168-feed-parsing

И это не работает. Я установил драгоценный камень и перезагрузил сервер rails. Строка config/environment препятствует работе rake db:migrate, что приводит к этой ошибке:

/config/environment.rb:7:in `<top (required)>': undefined local variable or method `config' for main:Object (NameError)

поэтому я оставил это.

Строка консоли FeedEntry, в которой я передаю URL, дает эту ошибку: FeedEntry.update_from_feed("feed://seekingalpha.com/market_currents.xml") NameError: uninitialized constant FeedEntry::Feedzirra

И код просмотра дает эту ошибку: wrong number of arguments (1 for 0) с этим в извлеченном источнике:

<div class="container-fluid" id="seeking_alpha">
<h3>Seeking Alpha Feed</h3>
<ul class="list-group">
<% for entry in FeedEntry.all(:limit => 10, :order => "published_at desc") %>
  <li class="list-group-item"><%= link_to h(entry.title), entry.url %></li>
<% end %>
</ul>

Можете ли вы помочь мне решить проблемы здесь? Помимо того, что это полный Rails n00b, я предполагаю, что моя проблема заключается в том, что Feedjira не инициализирована, возможно, из-за того, что эта строка не указана из-за использования более новой версии Rails (4.0) и Ruby (2.1.1), чем учебник делает. И, возможно, формат файла .xml в ленте также вызывает проблему. Похоже, Feedjira просто не хочет существовать вне своей модели. Любые идеи будут очень признательны.


person Rootski    schedule 02.10.2014    source источник
comment
Кроме того, только что проверил - Feedjira работает с локальным файлом .xml через консоль rails в моем приложении.   -  person Rootski    schedule 02.10.2014


Ответы (1)


Все ваши ошибки связаны с пропуском этого первого оператора конфигурации.

Если вы посмотрите на исходный код из Railscast, Райан определяет config следующим образом в environment.rb:

Rails::Initializer.run do |config|

Хотя мы не видим ваш файл environment.rb, в вашей ошибке указано, что вы не определили config.

Без config нельзя запускать миграции, поэтому нет модели FeedEntry, отсюда и ошибки в вашем консольном скрипте и вашем представлении. Вам также понадобится этот оператор для использования Feedzirra::Feed в вашей модели - он должен работать.

Резюме:

  • Определите config в config/environment.rb
  • Запустите миграцию
  • Сравните с исходным кодом Railscast, если вы застряли

Кроме того, этот Railscast старый (2009 г.); «Feedzirra» был переименован в «Feedjira», и вы можете добавить его в свой Gemfile:

gem 'feedjira'

Вам придется просмотреть документацию (http://feedjira.com), чтобы узнать об изменении функциональности в геме, но это, вероятно, будет более легкий путь.

Удачи!

person Jake Worth    schedule 08.02.2015