Article_right_arrow Asparageek : saison 3 Article_left_arrow Exprimez-vous sur Asparageek !

Asparageek a son flux RSS !

27 mars 2009      Commentaires (1)    
RSS powa !

Ayé ! Asparageek a son flux RSS ! Suffit de cliquer ici, ou sur le lien que j'ai ajouté dans la barre de navigation là-haut. N'hésitez pas à me faire vos remarques.

Et puis pour ceux qui ne connaissent pas encore ce que sont les flux RSS, je vous propose un tutoriel pour les recevoir dans votre boîte mail via Thunderbird ici.

Créer son flux RSS avec Ruby on Rails

Comme j'ai un peu (ok, beaucoup !) cherché pour trouver la documentation dont j'avais besoin, alors que c'est pourtant si simple, j'en profite pour poster ce mini-tuto. Ce qui est ci-dessous fonctionne avec Ruby 1.8.6 et Rails 2.0.2 .

Tout d'abord, j'ai créé un controller pour gérer le RSS :

>> ruby script/generate controller Rss

Dans ce contrôleur, je définie simplement une action index, dans laquelle je récupère mes dix derniers articles, par ordre descendant :

class RssController < ApplicationController

    def index
        @articles = Article.find(:all, :order => "date_creation DESC", :limit => 10)
        respond_to do |format|
            format.rss { render :layout => false}
        end
    end
end

Il suffit de signifier que le format de réponse sera en RSS par la méthode respond_to. On précise :layout => false pour s'assurer que Rails ne tentera pas d'afficher le fichier RSS enrobé d'un layout quelconque (ou plutôt que quelconque, celui qui est utilisé habituellement).

Dans les views, il faut ensuite créer le fichier index.rss.builder dans le répertoire rss (app/views/rss).

Dans celui-ci, on crée un fichier XML on ne peut plus basique (un flux RSS ce n'est rien de plus) avec les informations récupérées dans le contrôleur :

xml.instruct! :xml, :version=>"1.0"

xml.rss(:version => "2.0") do
  xml.channel do
    xml.title("Titre du site")
    xml.link("URL du site")
    xml.description("Petit blabla sympa")

    @articles.each do |article|
      xml.item do
        xml.title    article.titre
        xml.link    url_for :only_path => false, :controller => 'article', :action => 'show', :id => article.id
        xml.description article.description
        xml.pubDate     article.created_at.to_s(:rfc822)
        xml.guid    url_for :only_path => false, :controller => 'article', :action => 'show', :id => article.id
    end
   end

  end
end

L'exemple ci-dessus suppose que vous aillez un contrôleur nommé "article", possédant lui-même une action "show", prenant un argument id pour connaître l'article à afficher. Chaque article doit avoir toutes les propriétés citées ci-dessus : titre, description et created_at (et un id, pour le lien).

La balise item encadre chaque nouvel article.

La balise titre désigne le titre de l'article à afficher.

La balise link donne le lien vers cet article sur votre site. Dans les agrégateurs comme Thunderbird, c'est le contenu de ce lien qui peut être affiché directement.

La balise description est une courte description de l'item, qui apparaît, dans les agrégateurs qui n'affichent pas directement les pages linkées, juste sous le titre de chaque item.

La balise pubDate indique la date de création / mise à jour au format exigé par le flux RSS : RFC-822.

La balise guid doit être un identifiant unique pour l'item. Il est d'usage de réutiliser ici l'URL de l'article, puisqu'il est, normalement, unique.

Il existe d'autres balises utilisables, selon vos besoin, dans le XML de votre builder.

Et c'est tout. Vous pouvez vérifier que ça fonctionne avec votre navigateur sur localhost:3000/rss.

Remarque : Les agrégateurs de flux RSS comme Thunderbird affichent souvent le contenu de la page linkée plutôt que le contenu de description du XML. Ca peut être amusant d'avoir une vue spécifique pour les RSS.


Utiliser Thunderbird pour recevoir vos flux RSS

Au cas où : Mozilla Thunderbird est un logiciel gratuit de gestion de mails (comme Outlook Express, si vous préférez). Il joue très bien le rôle d'agrégateur de flux RSS en créant un répertoire par abonnement, et un "mail" par news. Il affiche aussi directement la page du site, ce qui est toujours plus agréable et plus élégant que le bloc de texte brute ou moyennement formaté du xml d'origine.

Ce qui suit fonctionne avec Thunderbird 2.

Lancez Thunderbird. Faîtes un clic gauche sur "Dossiers locaux", à gauche, puis sur "Gérer les abonnements", dans la fenêtre principale.

Dans la fenêtre qui apparaît, choisir "Nouvelles RSS et blogs"

Choisissez un nom pour le nouveau dossier qui sera créé dans le menu de gauche (au dessus de "Dossiers Locaux"), puis cliquez sur "Suivant" et "Terminer".

A gauche, faîtes un clic gauche sur votre nouveau dossier, et dans la fenêtre principale, choisissez "Gérer ses abonnements".

Dans la nouvelle fenêtre, cliquez sur "Ajouter".

Dans le champ "URL du fil", saisissez l'URL vers le fil RSS. Pour Asparageek, c'est tout simplement http://www.asparageek.net/rss.

Thunderbird va ensuite charger les dernières news du fil RSS que vous avez indiqué, puis reviendra à la fenêtre initiale, que vous pouvez alors fermer.

Vous pouvez désormais recevoir et lire tranquillement les derniers articles du site à partir de Tunderbird (cliquez pour agrandir) :

Cliquez pour agrandir.

Pour un seul site évidemment, l'intérêt est limité, mais lorsque vous enregistrez plusieurs sites, cela vous permet d'éviter de naviguer un peu partout sur le net pour recevoir les dernières news.. ou pas d'ailleurs, quand il n'y a rien de neuf. Avec ce système, vous cliquez sur "Relevez" (en ayant sélectionner votre dossier RSS), et vous saurez d'un coup d'oeil quels sites ont été mis jour, et vous pourrez lire les articles directement. Pratique non ?

Qu'est-ce que vous en pensez ?

Comment_arrow Reggie368, le 12 July 2009

Tiens j'ai encore appris un truc ce soir !

Je serai vraiment beaucoup moins bête en me couchant ! (^_^)

Laissez un p'tit mot !

Votre nom :

Votre e-mail :

Votre adresse e-mail ne sera pas affichée sur le site.




Article_right_arrow Asparageek : saison 3 Article_left_arrow Exprimez-vous sur Asparageek !