FeedTools è una delle soluzioni più mature tra quelle illustrate in questo capitolo. Innanzitutto vediamo come scaricare i titoli dei nuovi feed da un canale:
require 'rubygems' require 'feed_tools' feed = FeedTools::Feed.open('http://feeds.feedburner.com/stacktrace') puts "Feed from #{feed.title}" feed.items.each do |post| puts " " + post.title end
Come nei casi precedenti per ogni post sono disponibili tutte le informazioni utili (autore, data, descrizione, commenti, etc.). Lo stesso procedimento va seguito per i feed di tipo Atom.
Anche la generazione di feed avviene seguendo lo stesso schema visto per la libreria RSS:
require 'rubygems' require 'feed_tools' feed = FeedTools::Feed.new feed.title = 'Feed di esempio' feed.description = 'Descrizione del canale RSS' feed.link = 'http://example.com/' post = FeedTools::FeedItem.new post.titolo = "Titolo del post" post.content = "Post d'esempio" post.summary = "Descrizione del post d'esempio" post.link = "http://example.com/post/1" feed.items << post output_xml = feed.build_xml('rss', 2.0)
La differenza principale sta nel fatto che in questo caso è possibile generare anche feed Atom e non solo RSS come accade per la libreria standard.
Un elemento caratterizzante di FeedTools
è il sistema di caching (DatabaseFeedCache
) che permette di salvare localmente i feed e scaricarli solo in caso di modifiche.