2011-07-21 4 views
1

Je travaille sur un gros projet, et j'ai réalisé que plusieurs des composants étaient des groupes de classes que je pourrais transformer en services et supprimer de Rails. Mais maintenant que je l'ai fait, je me rends compte que la lenteur du chargement des classes sans Spork n'est pas une fonction de Rails lent, mais une fonction de Ruby étant lente. Y a-t-il quelque chose comme Spork qui fonctionnera dans des projets non-Rails?Préchargement de classes sans Rails?

Répondre

2

Spork devrait fonctionner très bien pour tout projet de rubis, il nécessite juste un peu plus de configuration.

En supposant que vous utilisez rspec 2.x et spork 0.9, faire une spec_helper.rb qui ressemble à:

require 'spork' 

# the rspec require seems to be necessary, 
# without it you get "Missing or uninitialized constant: Object::RSpec" errors 
require 'rspec' 

Spork.prefork do 

    # do expensive one-time setup here 
    require 'mylibrary' 
    MyLibrary.setup_lots_of_stuff 

end 

Spork.each_run do 

    # do setup that must be done on each test run here (setting up external state, etc): 
    MyLibrary.reset_db 

end 

Tout dans le bloc Spork.prefork ne sera exécuté qu'une seule fois (au démarrage du Spork), le reste se déroulera sur tous les invocation de test.

Si vous avez beaucoup de configuration spécifique au framework, vous feriez probablement mieux de créer un AppFramework pour votre bibliothèque. Voir le padrino AppFramework pour un exemple.