Railsアプリケーションを作ってみる。feedzirra – RSS取得編

こんばんは。小川です。
相変わらず気分転換にRailsアプリケーションをつくって楽しんでいます。
Railsはさわればさわるほど、便利だなぁと実感できる素晴らしいフレームワークです。

突然ですが、今回Railsアプリケーションをつくるにあたって、シンプルなRSSリーダーをつくってみることにしました。
私はGoogleリーダーを好んで使っていたのですが、終了して以来どのリーダーもあまりしっくりこなかったため、今はリーダーを使用していません。
そしてこれを機会にシンプルなRSSリーダーをつくってみようとなった次第です。

もちろんリーダーなので、各Webサイトが更新しているxml形式のRSSをパースしなければなりません。
そこで、どこからともなくfeedzirraがいいぞとの情報を聞きつけましたので、feedzirraによるフィードの取得方法についてお話ししたいと思います。

公式のGitHubページです。
pauldix/feedzirra · GitHub

ここで言うまでもなく、Stack Overflowが大活躍してくださいました。


ruby on railsでrssリーダーをつくるために。


さて、まずおなじみのGemfileにfeedzirraを追加します。

gem ‘feedzirra'

以下のコマンドを実行。

bundle install

config/application.rbに以下の記述を追加
class Application < Rails::Application

  #追加2行
  config.autoload_paths += %W(#{config.root}/lib)
  config.autoload_paths += Dir["#{config.root}/lib/**/"]

end

そしてlib/tasks内に以下のファイルを作成。

get_feed_task.rb
class Tasks::GetFeedTask

  def self.execute
    #RSSを取得する
    require 'feedzirra'
    url = ‘https://www.nxsw.co.jp/feed/'
    feed = Feedzirra::Feed.fetch_and_parse(url)
  end

end


変数feedにurlから取得したRSSのオブジェクトが入っていますので、GitHubのfeedzirraのページのUsageに各要素へのアクセス方法が記載されています。
あとは、試しに動かしてみます。
コマンドは以下。

rails runner Tasks::GetFeedTask.execute

あとはモデルでDBへ保存するなり、crontabを使ってバッチ処理を行うなりします。
次回は、railsでcrontabを管理するためのライブラリwheneverをご紹介します。