【ruby on rails】rubyでRSSを生成する。

なかなかうまく行かなかったが、なんとかそれっぽくなった。
結局、RSS::Makerを使う方法とBuilder::XmlMarkupを使う方法両方で試した。

■rss/maker

  def new
    require 'rss/maker'
    
    rss = RSS::Maker.make("2.0") do |maker|

      # channelの設定
      maker.channel.about = url_for(:controller=>"rss", :action=>"new")
      maker.channel.title = "ぐだろぐ"
      maker.channel.description = "日記やメモなど、ぐだぐだ書いていくソーシャルネットワークに疲れた人向けのサービスです。"
      maker.channel.link = url_for(:controller=>"top")
      maker.channel.language = "ja"
      
      # RSSのitemを更新日が新しい順番にソート
      maker.items.do_sort = true
      maker.items.max_size = 15
      
      # itemの設定
      Log.find(:all, :order=>"created_on DESC", :limit=>15).each do |log|
        item = maker.items.new_item
        item.title = log.title
        item.link = url_for(:controller=>"log", :action=>"show", :id=>log.id)
        item.dc_subject = url_for(:controller=>"log", :action=>"show", :id=>log.id)
        item.description = short_text(log.text, 200)
        item.date = Time.parse(log.created_on)
      end
    end
    
    @headers["Content-Type"] = 'application/xml; charset=UTF-8'
    render :text => rss.to_s, :layout => false
    
  end

■Builder::XmlMarkup

  def new
    xml = Builder::XmlMarkup.new
    xmlobj = xml.rss("version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/") do
      xml.channel do
        xml.title("ぐだろぐ")
        xml.link(url_for(:controller=>"top"))
        xml.description "日記やメモなど、ぐだぐだ書いていくソーシャルネットワークに疲れた人向けのサービスです。"
        xml.language "ja"
        xml.ttl "60"
    
        Log.find(:all, :order=>"created_on DESC", :limit=>15).each do |log|
          xml.item do
            xml.title(log.title)
            xml.description(short_text(log.text, 200))
            xml.pubDate(log.created_on)
            xml.link(url_for(:controller=>"log", :action=>"show", :id=>log.id))
            xml.tag!("dc:creator", "ぐだろぐ")
          end
        end
      end
    end
    render :xml => xmlobj
  end

どちらも、テンプレートは使用せずに出力します。

■参考はこちら
http://underrails.seesaa.net/article/55274391.html
http://techno.hippy.jp/rorwiki/?Wiki%A4%F2%BA%EE%A4%C3%A4%C6%A4%DF%A4%EB%2FRSS%A5%D5%A5%A3%A1%BC%A5%C9%A4%F2%BA%EE%A4%EB


あと、rss出力時のcontent-typeを何にすればいいか迷ったが、
どうやらapplication/xmlがいい感じです。
■参考
http://www.hyuki.com/d/200404.html

タグ:[ruby on rails

このログへのコメント(0件)

コメント投稿フォーム

コメント

※半角英数字だけのコメントは投稿できません。

トラックバック

関連ログ