【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

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

40suoz9zbds59ocl
[link=http://xjwe8q0c08rcdd24.com/]ciystf4bre8loyfv[/link]
<a href=http://797zhuincalluxwk.com/>fsf65wrd5h2b29o1</a>
http://t97i93293jk4qde7.com/
ぐだろぐ

コメント投稿フォーム

コメント

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

トラックバック

fijfxsnf(fijfxsnf)

fijfxsnf

phentermine side effects(phentermine side effects)

phentermine side effects

orlistat(orlistat)

orlistat

order valium online(order valium online)

order valium online

hydrocodone online(hydrocodone online)

hydrocodone online

acai berry cleanse(acai berry cleanse)

acai berry cleanse

tetracycline(tetracycline)

tetracycline

imuran(imuran)

imuran

atarax(atarax)

atarax

prilosec otc(prilosec otc)

prilosec otc

pravachol(pravachol)

pravachol

drug xanax(drug xanax)

drug xanax

cialis for(cialis for)

cialis for

order viagra online(order viagra online)

order viagra online

januvia(januvia)

januvia

meridia(meridia)

meridia

toradol(toradol)

toradol

order adipex(order adipex)

order adipex

testosterone(testosterone)

testosterone

buy xanax(buy xanax)

buy xanax

baclofen(baclofen)

baclofen

acai berry diet(acai berry diet)

acai berry diet

buy phentermine 37.5(buy phentermine 37.5)

buy phentermine 37.5

ultram tramadol(ultram tramadol)

ultram tramadol

cialis price(cialis price)

cialis price

avapro(avapro)

avapro

pamelor(pamelor)

pamelor

lopressor(lopressor)

lopressor

lasix(lasix)

lasix

celecoxib(celecoxib)

celecoxib

generic soma(generic soma)

generic soma

zyrtec d(zyrtec d)

zyrtec d

aricept(aricept)

aricept

cialis vs(cialis vs)

cialis vs

serevent(serevent)

serevent

altace(altace)

altace

glucophage(glucophage)

glucophage

advil(advil)

advil

cialis 20(cialis 20)

cialis 20

singulair(singulair)

singulair

cheap cialis(cheap cialis)

cheap cialis

pravachol(pravachol)

pravachol

viagra online(viagra online)

viagra online

januvia(januvia)

januvia

cialis discount(cialis discount)

cialis discount

doxazosin(doxazosin)

doxazosin

exelon(exelon)

exelon

synthroid(synthroid)

synthroid

xenical(xenical)

xenical

zyvox(zyvox)

zyvox

flomax side effects(flomax side effects)

flomax side effects

lhirmfhs(lhirmfhs)

lhirmfhs

hydrocodone apap(hydrocodone apap)

hydrocodone apap

tylenol 3(tylenol 3)

tylenol 3

zestril(zestril)

zestril

amaryl(amaryl)

amaryl

8 cialis(8 cialis)

8 cialis

buy prozac(buy prozac)

buy prozac

order phentermine(order phentermine)

order phentermine

purchase cialis(purchase cialis)

purchase cialis

effexor withdrawal(effexor withdrawal)

effexor withdrawal

bactrim(bactrim)

bactrim

vermox(vermox)

vermox

purchase viagra(purchase viagra)

purchase viagra

zetia(zetia)

zetia

vasotec(vasotec)

vasotec

propecia online(propecia online)

propecia online

generic cialis(generic cialis)

generic cialis

vermox(vermox)

vermox

saw palmetto(saw palmetto)

saw palmetto

buy xanax online(buy xanax online)

buy xanax online

bcaa(bcaa)

bcaa

generic soma(generic soma)

generic soma

flagyl(flagyl)

flagyl

doxycycline(doxycycline)

doxycycline

buy xanax online(buy xanax online)

buy xanax online

cheap phentermine online(cheap phentermine online)

cheap phentermine online

hoodia diet(hoodia diet)

hoodia diet

motrin(motrin)

motrin

atacand(atacand)

atacand

trileptal(trileptal)

trileptal

wellbutrin sr(wellbutrin sr)

wellbutrin sr

acai supplements(acai supplements)

acai supplements

crestor side effects(crestor side effects)

crestor side effects

topamax side effects(topamax side effects)

topamax side effects

ambien(ambien)

ambien

hoodia diet(hoodia diet)

hoodia diet

motrin(motrin)

motrin

biaxin(biaxin)

biaxin

topamax side effects(topamax side effects)

topamax side effects

avandia(avandia)

avandia

green tea(green tea)

green tea

decadron(decadron)

decadron

aciclovir(aciclovir)

aciclovir

トラックバックURL

関連ログ