Rake est donc un moyen pratique de se simplifier la tâche lorsqu'on est développeur et qu'on veut automatiser une partie du processus de développement.

L'exemple de Rakefile qui suit est la base que j'utilise pour tous mes projets en Ruby. S'il manque des tâches, vous pouvez facilement étendre ce fichier en utilisant la magie de Ruby ;-).

Fichier Rakefile à placer à la racine de votre projet

# On charge les librairies nécessaires à la création de Gem, de documentation, des fichiers de traduction et des suites de tests
require 'rake/gempackagetask'
require 'gettext/utils'
require 'gettext/rmsgfmt'
require 'rake/rdoctask'
require 'rake/testtask'
# Constante qui contient la version de notre projet
VER = '0.3.0'
# Tâche à éxecuter par défaut si on tape simplement rake
desc "Create the gem and install it" # Description de la tâche dans l'aide donnée par Rake -T
task :default => [:install] # La tâche :default dépend de la tâche :install
# Spécifications pour le gem
SPEC = Gem::Specification.new do |s|
   s.name      = 'nom_du_projet'
   s.version   = VER
   s.author    = 'Mon nom'
   s.email     = 'mon@mail.org'
   s.homepage  = 'http://mon.site.org'
   s.summary   = 'Résumé de l'utilité du logiciel'
   s.description = 'Description plus longue'
   candidates  = Dir.glob("{bin,data,doc,lib,po,locale,test}/**/*")
   s.files     = candidates.delete_if do |item|
                   item.include?("CVS") || item.include?("rdoc")
               end
   s.executables           = ['nom_de_l_executable']
   s.test_file             = 'test/ts_mestests.rb' #Chemin vers la suite de tests
   s.has_rdoc              = true # On a de la RDoc et on veut générer une sortie HTML
   # Fichiers qui contiennent de la RDoc mais qui ne sont pas des fichiers source
   s.extra_rdoc_files      = ['README', 'doc/FAQ', 'doc/HACKING', 'doc/TODO', 'doc/AUTHORS', 'doc/BUGS', 'doc/ChangeLog']
   s.rdoc_options          = ['--title', 'Mon titre pour la doc HTML', '--main', 'README', '--line-numbers']
   s.required_ruby_version = '>= 1.8.1'
   s.add_dependency('gettext') # Libs requises et qui existent en Gem
   s.requirements          = ['Libglade 2 bindings'] # Libs requises qui ne sont pas disponibles en Gem
end
# Permettre la création d'un Gem : rake gem
task :gem => [:create_mo]
Rake::GemPackageTask.new(SPEC) do |pkg|
   pkg.need_zip = true
   pkg.need_tar_bz2 = true
end
# Installation du logiciel pour utilisation : rake install
task :install => [:gem] do
   sh "gem install pkg/Mon-logiciel-#{VER}.gem"
end
# Création de la documentation HTML : rake rdoc
Rake::RDocTask.new do |rd|
   rd.main = "README"
   rd.rdoc_files.include('README', 'doc/FAQ', 'doc/HACKING', 'doc/TODO', 'doc/AUTHORS',
                       'doc/BUGS', 'doc/ChangeLog', 'bin/*', 'lib/*')
end
# Lancer les tests unitaires : rake test
Rake::TestTask.new do |t|
   t.libs << "test"
   t.test_files = FileList['test/ts*.rb']
   t.verbose = true
end
# Créer le .mo à partir des .po : rake create_mo
desc "Generate MO files from PO files"
task :create_mo do
   GetText.create_mofiles(true, "po", "locale")
end

# Met à jour les fichiers de traduction en relisant le sources
desc "Update PO files"
task :update_po do
   GetText.update_pofiles("domaine", ['bin/fichier', 'lib/fichier1.rb', 'lib/fichier2.rb'], VER)
end
# Effacer tous les fichiers .mo : rake clobber_mo
desc "Remove generated MO files"
task :clobber_mo do
   sh "rm -r locale"
end
# Effacer tous les fichiers auto-générés : rake clobber
desc "Remove any generated file"
task :clobber => [:clobber_package, :clobber_rdoc, :clobber_mo] do
end

En plus des ses tâches, plusieurs autres sont disponibles grâce à l'inclusion des librairies en début de fichier. Pour une liste exhaustive des tâches supportées essayez rake -T.

Cet exemple vous permettra de commencer confortablement, n'hésitez pas à l'enrichir si certaines de vos tâches courantes n'y figurent pas. Voilà, maintenant vous n'avez plus d'excuse si vous n'utilisez pas Rake ;-).