Ruby Je sais bien que ça te démange toi aussi de pisser du code.

Et quoi de mieux que de faire du Ruby ?

Nous allons tout mettre en place pour que tu puisses faire du TDD rapidement.

Les prérequis :

  • Ton cerveau (pour bien comprendre la suite)
  • Growl pour les notifications (Pour OsX, ou Windows)
  • Une version de Ruby (avec rbenv pour OS X, ou avec un installeur pour Windows) je suis encore avec la version 1.9.3 si tu te poses la question
  • Git (Pour Windows, Mac Os X via Homebrew, et pour Linux tu sais faire)

Prêt ?

Pour commencer, création d’une librairie vide grâce à bundle :

gem install bundler # Si jamais il n'est pas installé
bundle gem demo_howto -t
cd demo_howto

`bundle gem demo_howto -t` permet de créer une coquille vide pour ta librairie.

Ensuite, tu édites le fichier gemspec. Dans ton cas, c’est « demo_howto.gemspec ».

Il faut y mettre à jours les parties « description » et « summary ». Mettre un site dans la partie « homepage » est une bonne idée aussi.

Et moi j’ajoute les librairies :

  spec.add_development_dependency "wdm" if RUBY_PLATFORM =~ /mingw/
  spec.add_development_dependency "ruby_gntp" if RUBY_PLATFORM =~ /mingw/
  spec.add_development_dependency "rb-fsevent" if RUBY_PLATFORM =~ /darwin/
  spec.add_development_dependency "growl" if RUBY_PLATFORM =~ /darwin/
  spec.add_development_dependency "guard"
  spec.add_development_dependency "guard-rspec"

Pour installer les librairies :

bundle

Rouge !

Pour vérifier si tout marche :

bundle exec rspec

Ça donne :
Barre rouge

C’est rouge ! Et bien, comme maintenant tu fais du TDD c’est normal tout va bien !

Avant de passer à la résolution du test, on va regarder 2/3 autres trucs.

Tu vas faire :

bundle exec guard init

Et ouvrir le fichier « Guardfile » pour enlever les parties les moins intéressantes (Rails, toussa) :

guard :rspec do
  watch(%r{^spec/.+_spec\.rb$})
  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
  watch('spec/spec_helper.rb')  { "spec" }
end

Comme tu l’as peut-être remarqué, il y a un léger problème de cohérence entre la partie générée par Bundler et Guard :
Guard va chercher les specs dans le répertoire « spec/lib/#{m1}_spec.rb ». Alors que Bundler l’a mis dans « spec/demo_howto_spec.rb ».

Donc tu fais bien comme tu veux, mais moi je déplace le fichier de spec :

git mv spec/demo_howto_spec.rb spec/lib/demo_howto_spec.rb

Tu vas pouvoir essayer tout ça :

bundle exec guard

Et si tu édites les deux fichiers dans ton éditeur de texte (moi j’utilise vi) :

mvim -o lib/demo_howto.rb spec/lib/demo_howto_spec.rb

Voilà de quoi démarrer :)

Tu peux aller voir le code sur mon Github.

J’y mets aussi 2/3 autres trucs pour que tu puisses t’amuser un peu.

Vert !

Ha oui, tu voulais surement que ça passe vert !

Remplace donc :

  it 'should do something useful' do
    false.should be_true
  end

Par :

  it 'should do something useful' do
    true.should be_true
  end

La barre verte

C’est trop facile Ruby :p

EDIT: Ajout de Git dans les prérequis