RSS feed

「還有人用 RSS 嗎?」
「沒了吧」

好啦,雖然看起來沒人用,但我還是想寫一下 RSS feed。一來了解技術、二來這是部落格的重要功能、第三就是看了點文章後,有點想「力挽狂瀾」的熱血。至於什麼文章,可以移到後面的 Ref 來看。

最基礎來說,RSS feed 檔案是 XML 檔案。然後用 Conditional GET 推送請求。

總之,要做的話,就要做出這段 XML。看起來,用 Atom 格式比較新。接著,因為 RSS 就是個 XML,所以出乎意料的簡單,連 gem 也不需要。

那如果要維基百科那樣的格式,要怎麼做呢?

首先,你需要有一個專門放 RSS feed 的 controller:

# In app/controllers/foobar_controller.rb
def index
    respond_to do |format|
        format.atom
    end
end

接著建立一個 Builder 檔案以產生 XML:

# In app/views/foobar/index.atom.builder
atom_feed({'xml:lang' => 'zh-TW'}) do |feed|
    feed.title("Example Feed")
    feed.subtitle("A subtitle.")
    feed.author do |a|
        a.name("John Doe")
        a.email("johndoe@example.com")
    end
end

我們還要給個 entry……

# In app/views/foobar/index.atom.builder
atom_feed({'xml:lang' => 'zh-TW'}) do |feed|
    feed.entry(article) do |entry|
        entry.title(article.title)
        entry.link("http://example.org/2003/12/13/atom03")
        entry.summary("Some text.")
    end
end

總之,針對 <property>value</property> 的東西,你要在 builder 這樣寫成 feed.property("value") 這樣。把必要的東西寫好,接著用 URL 地址貼上訂閱器。收工。

參考資料