2009-06-22 3 views
2

Comment déboguer rapidement les méthodes d'assistance dans script \ console. Je parle de faire des changements et ensuite de déboguer, encore et encore.Déboguer rapidement les méthodes d'assistance dans script console

C'est beaucoup plus facile avec les méthodes du Modèle, puisque tout ce que j'ai à faire est d'utiliser reload! pour tester le code mis à jour, alors que pour tester une méthode d'aide, je dois faire quelque chose comme ça

foo = ActionView :: Base.new foo.extend YourHelperModule

chaque fois que je veux tester un changement.

Qu'est-ce que recharger! faire? et puis-je le modifier pour ajouter les lignes de code ci-dessus?

Répondre

3

Je ne pense pas que vous pouvez le faire sans piratage de Rails. Cependant, il y a une solution de contournement - méthode d'assistance de débogage dans des rails débogueur:

1) gem install ruby-debug

2) Script ruby ​​/ serveur --debugger

3) placer <%% du débogueur> en une vue et d'ouvrir cette page dans le navigateur

4) fenêtre du serveur « se transforme en » console, où vous pouvez déboguer des méthodes d'aide

5) commande « retour » se termine le débogage

Si vous modifiez la méthode d'assistance et réexécutez le débogueur, vous obtiendrez une version récente de la méthode.

En savoir plus sur débogueur est ici: http://railscasts.com/episodes/54-debugging-with-ruby-debug

2

Je suggère de ne pas utiliser la console de script et d'écrire des tests dans Test :: Unit ou rspec à la place. Google devrait vous faire pointer dans la bonne direction, il y a une tonne d'informations là-bas.

0

Si vous faites quelque chose « encore et encore », alors vous devriez être en automatisant. En supposant que vous savez ce que votre fonction d'assistance devrait faire alors comme mentionné ailleurs, vous devriez être capable d'écrire un test (ou des tests) pour cela.

Voici un exemple qui teste application_helper. Il vit dans mon répertoire test/unit:

require 'test_helper' 

class ApplicationHelperTest < ActiveSupport::TestCase 

    include ApplicationHelper 

    test "number_as_pct shows 2dp as default" do 
    assert_equal "1.10%", number_as_pct(0.011) 
    end 
    test "number_as_pct shows more dp when required" do 
    assert_equal "1.1000%", number_as_pct(0.011, :precision => 4) 
    end 
end 
Questions connexes