Hatena::Grouprubyist

うんたらかんたらRuby RSSフィード

2009-01-22auto discovery

auto discovery

| auto discovery - うんたらかんたらRuby を含むブックマーク はてなブックマーク - auto discovery - うんたらかんたらRuby

全く知らんかったんだが

urlの端っこに「このサイトはrss用意してますよ」っていうのを

明示的に表示するための機能のようです。

safariだとこんな感じ。

f:id:rochefort:20090122002049p:image


ポチッとするとrssフィード画面に遷移。遷移の仕方がカッコイイ!!

いいよsafari


これをrailsで実装するとこんな感じ。

layoutsのerbに追記。(headタグ内)

rss2.0
<%= auto_discovery_link_tag(:rss, formatted_entries_url(:rss)) %>

atom
<%= auto_discovery_link_tag(:atom, formatted_entries_url(:atom)) %>

htmlには以下のようなタグが追加される。

<link href="http://127.0.0.1:3000/entries.atom" rel="alternate" title="ATOM" type="application/atom+xml" />
トラックバック - http://rubyist.g.hatena.ne.jp/rochefort/20090122

2009-01-21macでrssが見れない

macでrssが見れない

| macでrssが見れない - うんたらかんたらRuby を含むブックマーク はてなブックマーク - macでrssが見れない - うんたらかんたらRuby

railsでrssフィードを作る - うんたらかんたらRuby - Rubyistで作った

rsssafariで確認しようとすると

f:id:rochefort:20090121003045p:image

開いたページから、Safari でサポートされていないページにリダイレクトされました。

Safari は “localhost:” で始まる場所へのリダイレクトに対応していません。

とエラーメッセージ。


ふ〜ん、firefoxでは見れるけどsafariでも見たいんだけどなぁ。

localhostがダメならip指定でやってみると

見えた!!

トラックバック - http://rubyist.g.hatena.ne.jp/rochefort/20090121

2009-01-20railsでrssフィードを作る

railsでrssフィードを作る

| railsでrssフィードを作る - うんたらかんたらRuby を含むブックマーク はてなブックマーク - railsでrssフィードを作る - うんたらかんたらRuby

scaffoldで作成した一覧(index)用にrssフィードを作成してみた。

※モデル名はentry。


controller

controllerのrespond_toでハンドリング

rss2.0はindex.rxmlにリダイレクトさせる。

 def index
  #(略)
  respond_to do |format|
    format.atom    #atom用
    format.rss  { render(:action => "index.rxml") }    #rss2.0用

view

atomはviewにindex.atom.builderファイルを作成

atom_feed do |feed|
  feed.title("RssTitle")
  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("RSSAuthor")
      end
    end
  end
end

rss2.0はindex.rxmlにリダイレクトさせるように記述。(上記参照:controller)

書き方は、こちらを参考にしました。

RailsでRSSフィードを配信するのは超簡単! - 医者を志す妻を応援する夫の日記

Rails 2.0 » Rails2.0によるAtom/RSSフィードの実装(GET)

xml.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
xml.rss('version' => '2.0', 'xmlns:atom' => 'http://www.w3.org/2005/Atom', 'xmlns:openSearch' => 'http://a9.com/-/spec/opensearchrss/1.0/') do
  xml.channel do
    xml.title "Blog Title"
    xml.link(request.protocol + request.host_with_port + url_for(:rss => nil))
    xml.language "ja-ja"
    xml.ttl "40"
    xml.pubDate(Time.now.strftime("%a, %d %b %Y %H:%M:%S %Z"))
    @entries.each do |e|
      xml.item do
        xml.title(e.title)
        xml.link(request.protocol + request.host_with_port +
                 url_for(:controller => 'entries', :action => 'show', :id => e.id ))
        xml.description(e.content)
        xml.guid(request.protocol + request.host_with_port +
                 url_for(:controller => 'entries', :action => 'show', :id => e.id ))
        xml.pubDate(e.created_at)
        xml.author "RssAuthor"
      end
    end
  end
end

感想

atomの方が作るの簡単。でもrss2.0の方がmainstreamなんだろうか。

トラックバック - http://rubyist.g.hatena.ne.jp/rochefort/20090120