ホーム > タグ > feed

feed

MagpieRSSを使ってRSSを読み込む

この記事はMagpieRSSを使って外部サイトのfeedを読み込むに引っ越しました。

Railsアプリでfeedの配信

  • 投稿者: admin
  • 2009年1月11日 11:57 AM
  • RoR

Atomフォーマットを追加
RailsにはAtomフィードの配信をサポートしてくれる機能がある。scaffoldを実行すると「respond_to」から始まるブロックが生成される。ここでマルチフォーマット対応を設定する。

マルチフォーマット機能は、同じアクションにアクセスした場合でもクライアントのリクエストに応じてHTMLやXML、JSON等、フォーマットを変えてレスポンスを返すことが出来る機能。

scaffoldでは、HTMLとXMLに対応した状態のものが生成される。

app/controller/entries_controller.rb を開いて「format.atom」を追加。
この場合はentriesという投稿記事一覧ページにこの機能を付けようとしている。

  def index
    @entries = Entry.find(:all)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :x ml => @entries }
      format.atom # ここにatomを追加した
    end
  end

これだけだとリクエストに応える準備が出来ただけでユーザが見える形で出力できないので、出力用の(XMLを出力する)テンプレートファイルを作成する。

app/views/entries/index.atom.builder という名前で以下の内容。

atom_feed do |feed|
  feed.title("Blog Title") # サイトの名前
  feed.updated((@entries.first.created_at))

  for entry in@entries
    feed.entry(entry) do |item|
      item.title(entry.title) # 記事ごとのタイトル
      item.content(entry.content, :type => 'html')

      item.author do |author|
        author.name("showjin") # 投稿者名
      end
    end
  end
end

これで、localhost:3000/entries.atom にアクセスするとAtomフィードのXMLが表示されるようになった。

ホーム > タグ > feed

検索
フィード

ページの上部に戻る