Όταν τρέχουμε τα tests μας, χρειάζονται κάποια δευτερόλεπτα ώστε αυτά να ξεκινήσουν να τρέχουν (τουλάχιστον αυτό συμβαίνει όταν χρησιμοποιούμε RSpec). Ο λόγος είναι ότι για να τρέξουν τα tests χρειάζεται να φορτωθεί στη μνήμη ολόκληρη η εφαρμογή μας.
Χρησιμοποιώντας το Spork
Ένας τρόπος να επιταχύνουμε αυτή τη διαδικασία είναι με τη χρήση του Spork. Για να χρησιμοποιήσουμε το Spork θα πρέπει να φορτώσουμε τα κατάλληλα gems στο gemfile μας.
group :development, :test do ... gem 'spork-rails' end
Χρησιμοποιούμε το gem ‘spork-rails’ αντί του ‘spork’, γιατί ενώ το Spork υποστηρίζει διάφορα frameworks, η υποστήριξη για Rails αφαιρέθηκε.
Στη συνέχεια τρέχουμε:
bundle install bundle exec spork --bootstrap
Πριν συνεχίσουμε θα πρέπει να φτιάξουμε τα configuration αρχεία. Για παράδειγμα, αν χρησιμοποιείτε RSpec ως test framework, στο αρχείο /spec/spec_helper.rb θα έχουν προστεθεί αυτόματα 2 block από το Spork. Θα πρέπει να μοιράσουμε τα προυπάρχοντα settings του αρχείου σε αυτά τα 2 blocks. Το πιο εύκολο είναι να τα βάλουμε μέσα στο block Spork.prefork.
Τέλος, για να ολοκληρώσουμε θα πρέπει να τρέξουμε την εντολή ‘spork’. Πριν την τρέξουμε όμως μπορούμε αν θέλουμε να χρονομετρήσουμε τα tests μας για να δούμε τη διαφορά. Για να χρονομετρήσουμε χρησιμοποιούμε την εντολή time, π.χ. ‘time bundle exec rspec’. Αφού ξεκινήσουμε το Spork, μπορούμε να ξανατρέξουμε τα tests και να δούμε πόσο πιο γρήγορα είναι.
Guard και Spork μαζί
Αν χρησιμοποιούμε το Guard για αυτοματοποίηση των tests, τότε για να συνεργαστούν Guard και Spork θα πρέπει να προσθέσουμε άλλο ένα gem.
gem 'guard-spork'
Στη συνέχεια τρέχουμε:
bundle install bundle exec guard init spork
Αυτό θα προσθέσει κάποια πράγματα στο Guardfile, που αν θέλουμε μπορούμε να τροποποιήσουμε (π.χ. να βάλουμε να ξεκινάει το Spork αυτόματα όταν θα ξεκινάμε το Guard).
Έτσι, έχοντας Guard και Spork εγκατεστημένα μπορούμε να βελτιώσουμε και να επιταχύνουμε το περιβάλλον ανάπτυξής μας, αλλά και ουσιαστικά να κάνουμε τη χρήση tests πιο εύκολη.