RSS-Feed mit Ruby on Rails realisieren

Gerade wurde ich einmal mehr von der Einfachheit und Genialität von Ruby on Rails überrascht. Ich habe soeben meinen ersten RSS-Feed mit Hilfe von RoR erzeugt und das Ergebnis ist so einfach, dass sich eigentlich schon fast jeder Kommentar erübrigt.

Zunächst im Controller die Daten des Models, dass im RSS ausgegeben werden soll, abfragen.

def rss
  1.    @posts = Post.find(:all, :order => 'id DESC', :limit => 20)
  2.    render :layout => false
  3. end

Zu beachten ist, dass (wie oben geschehen) das Rendering des Standard-Layouts im Controller unterbunden werden muss. Anstelle von HTML soll schließlich XML ausgegeben werden. Dazu muss eine Datei namens rss.rxml (man beachte die Dateiendung) erstellt werden, in der ganz einfach mit Hilfe des XML-Objektes die Struktur des RSS-Feeds aufgebaut wird:

xml.instruct! :xml, :version=>“1.0″
  1.  
  2. xml.rss(:version=>"2.0") {
  3.  
  4.   xml.channel {
  5.  
  6.     xml.title("Mein Blog")
  7.     xml.link(root_url)
  8.     xml.description("Infos aus meinem Berufsalltag")
  9.     xml.language("de-de")
  10.  
  11.     @posts.each do |post|
  12.  
  13.       xml.item do
  14.  
  15.         xml.title(post)
  16.         xml.description(post.title)
  17.         xml.pubDate(post.created_at.rfc2822)
  18.         xml.link(post_path(post.to_param))
  19.         xml.guid(post_path(post.to_param))
  20.  
  21.       end
  22.  
  23.     end
  24.  
  25.   }
  26. }

xml.instruct! leitet die XML-Ausgabe ein. Fast alle anderen Methoden, die an das XML Objekt gesendet werden, werden einfach in das gleichnamige XML Markup-Tag „übersetzt“. Methoden mit Blöcken (wie im obigen Beispiel „xml.channel“), werden wie Markup-Tags mit darin eingeschlossenen Tags behandelt.

Die genaue Dokumentation zum XML Builder in Ruby on Rails findet sich hier.

Share

Comments are closed.