Ruby ta première librairie
Je sais bien que ça te démange toi aussi de pisser du code.
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
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
C’est trop facile Ruby :p
EDIT: Ajout de Git dans les prérequis