New-Village

月間ブログ。だいたい1カ月に1回は更新しているようです。

Rails: feedjiraで記事収集

ここ暫く取り組んでいるRSSリーダー作りの記事です。

今回は記事を収集する為のアプリケーション"feedjira"をセットアップしました。

 

■ ブランチの作成

今回はfeedjiraを実装するので、"feedjira"というブランチを作成します。

~/workspace/xapp8(master)$ git checkout -b "feedjira"
~/workspace/xapp8(feedjira)$

 

■ セットアップ

まずはfeedjiraをインストールして、テスト的にデータを取ってみようと思います。

gemfileにfeedjiraを追加してインストールします。RubyGems.orgによると、現時点(2014/8/20)でのfeedjiraの最新バージョンは v1.3.1なので、以下のように記載しました。

gemfile

# 記事収集機能
gem 'feedjira', '~> 1.3'

記載したらインストールを実行します。また、feedjiraを定期的に実行させる為のrakeタスクを作成します。 

~/workspace/xapp8(feedjira*)$ bundle install
~/workspace/xapp8(feedjira*)$ rails g task getfeed

rails generateで作成したタスク"getfeed"に記事を収集する為のロジックを定義します。

lib/tasks/getfeed.rake

namespace :getfeed do
  desc "登録されているページのフィードをDBに格納します" #=> 説明

  # $ rake getfeed:exec のように使う
  # :environmentは超大事。ないとモデルにアクセスできない

  task :exec => :environment do
    urls = %whttp://new-village.hatenablog.com/rss
    feeds = Feedjira::Feed.fetch_and_parse urls
    feed = feeds['http://new-village.hatenablog.com/rss']
    puts "ブログTTL:"+feed.title
    puts "ブログURL:"+feed.url
    feed.entries
    entry = feed.entries.first
    puts "記事 TTL:"+entry.title
    puts "記事 URL:"+entry.url
  end
end

ロジックを定義したら、rakeの一覧に登録されているかどうか確認します。一覧に表示されたら、そのコマンドを実行します。putsで設定した内容が正しく表示されたらセットアップは完了です。

~/workspace/xapp8(feedjira*)$ rake -vT
...
rake getfeed:exec # 登録されているページのフィードをDBに格納する
~/workspace/xapp8(feedjira*)$ rake getfeed:exec
ブログTTL:New-Village
ブログURL:http://new-village.hatenablog.com/
記事 TTLRails: リンクを押すとDBを更新
記事 URL:http://new-village.hatenablog.com/entry/2014/08/20/122247

 

■ 最後に

いつも通り、各種サービスにアップロードして終了です。

~/workspace/xapp8(feedjira*)$ git add .
~/workspace/xapp8(feedjira)$ git commit -m"feedjiraセットアップ"
~/workspace/xapp8(feedjira)$ git checkout master
~/workspace/xapp8(master)$ git merge feedjira
~/workspace/xapp8(master)$ git push
~/workspace/xapp8(master)$ git push heroku