Shiny happy people coding

Codons avec le sourire

Hoe, l'aide de diffusion de gem sur rubyforge

| Comments

Qu'est ce qu'Hoe

Hoe est un tout petit gem géré par la Seattle Ruby Brigade!. Ce gem n'a qu'une utilité, aider au développement d'un gem sur rubyforge. Mais comme tout petite librairie importante, ce qu'il fait, il le fait bien.

Installation de Hoe

Dépendance

Hoe permet de générer des gems et il nécessite donc rubygems. Il déploie votre gems sur RubyForge et nécessite donc aussi le gem rubyforge. Il ajoute plein de tâche rake pour vous. il a donc besoin de rake.

Installation

Pour l'installer il suffit de faire un gem install hoe.

Créer un projet Hoe

Pour plus de simplicité pour la suite, il suffit de créer un projet hoe. C'est un peu comme réaliser un projet avec Rails. Hoe crée une série de répertoires et fichiers qui ont tous leurs utilités et permettront de réaliser facilement votre gem avec le déploiement sur RubyForge.

Pour créer votre projet, vous avez ainsi la commande sow. Il suffit de réaliser sow projet. Voici un exemple de sortie généré par cette commande.

hello-23:46:11:~/programmation/ruby/test$ sow testhoe
creating project testhoe
... done, now go fix all occurrences of 'FIX'

  testhoe/Rakefile:9:  # p.author = 'FIX'
  testhoe/Rakefile:10:  # p.email = 'FIX'
  testhoe/Rakefile:11:  # p.summary = 'FIX'
  testhoe/README.txt:2:    by FIX (your name)
  testhoe/README.txt:3:    FIX (url)
  testhoe/README.txt:7:FIX (describe your package)
  testhoe/README.txt:11:* FIX (list of features or problems)
  testhoe/README.txt:15:  FIX (code sample of usage)
  testhoe/README.txt:19:* FIX (list of requirements)
  testhoe/README.txt:23:* FIX (sudo gem install, anything else)
  testhoe/README.txt:29:Copyright (c) 2007 FIX

Vous obtenez ainsi l'arborescence suivante dans le répertoire "testhoe"

hello-23:46:19:~/programmation/ruby/test$ tree testhoe/
testhoe/
|-- History.txt
|-- Manifest.txt
|-- README.txt
|-- Rakefile
|-- bin
|   `-- testhoe
|-- lib
|   `-- testhoe.rb
`-- test
    `-- test_testhoe.rb

3 directories, 7 files

Voici à quoi sert chaques fichiers :

  • History.txt permet de définir le changelog de votre projet version par version. il est déjà pré-rempli
  • Manifest.txt est un fichier listant tous les fichiers qui sont présent dans votre futur gem. Vous pouvez vérifier si il est exacte grâce à une tâche rake : rake check_manifest. Ca générera un diff entre le fichier Manifest.txt et votre arborescence.
  • README.txt est tout simplement le fichier qui définis tout votre projet. C'est en grande partie à partir de lui que vous seront tiré les information pour publier votre gem.
  • RakeFile qui est le fichier de configuration des tâche rake généré par HOE.
  • le dossier bin est le dossier ou vous insérez l'executable
  • le dossier lib est le dossier où vous intégrez les librairies développé pour votre gem

Chaque partie du fichier README.txt est commenté et sera utilisé directement par des tâches rake pour la publication de votre gem sur rubyforge.

Configurer un projet Hoe

Pour configurer un projet Hoe, il faut éditer le fichier Rakefile. En effet, les informations importantes ce trouve dedans :

  • rubyforge_name : le nom du projet sur Rubyforge
  • author : le nom du créateur du gem
  • email : l'email du créateur du gem
  • summary : Résumé sur le gem. En général on utilise celui donné sur rubyforge
  • description : Il s'agit de la description détaillée de votre gem. Pareil autant utilisé celle de Rubyforge.
  • url : l'url de votre projet sur rubyforge
  • changes : la liste du changelog. Par défaut il s'agit du premier paragraphe du fichier history.txt
  • extra_deps : on peux ajouter la liste de dépendance gem nécessaire à votre gem. De la manière suivante : p.extra_deps << ['actionmailer', '>= 1.3.5']
  • remote_rdoc_rdir : il s'agit du chemin de base où sera déposé la rdoc généré de votre gem. Ca peux ainsi être envoyé sur le site qui vous est disponible par rubyforge.

Tâche rake utile

Grâce à Hoe, beaucoup de tâche rake sont ajoutée en voici une petite liste avec l'intérêt de chacune :

  • rake announce : génére un email et le post sur l'annonce de Rubyforge. Il se base sur le changelog généré à partir de change et description défini dans le RakeFile.
  • rake check_manifest : qui vérifie que votre manifest est correcte
  • rake gem : génére le gem en se basant sur la config Hoe. Le gem se trouve dans le dossier pkg
  • rake clean : supprime le dossier pkg
  • rake package : génére les différents packages de votre projet (tar.gz et gem) dans le dosser pkg
  • rake release : génére les paquets et envoie une annonce sur Rubyforge.
  • rake publish_docs : génére la rdoc du gem et l'upload sur le site de rubyrforge de votre gem.

Il y a encore d'autre doc que vous pouvez découvrir sur leur doc

Par contre un autre gem, newgem qui a été réalisé par DrNic. Je vais étudier ça de ce pas.