2010-01-15 5 views
19

J'ai une erreur de message très étrange. Je pense que ça ne vient pas de Ruby mais du système Unix.Rails erreur étrange => IndexError: chaîne non correspondue

Donc, j'ai le fichier test suivant:

require File.dirname(__FILE__) + '/../test_helper' 

class CatTest < ActiveSupport::TestCase 
    def test_truth 
    assert true 
    end 
end 

Ainsi, rien venant de fichiers YAML dans le répertoire fixtures.

Quand je lance le test ci-dessus avec la commande:

$ ruby ./test/unit/cat_test.rb 

Je reçois le résultat très étrange:

Loaded suite ./test/unit/cat_test 
Started 
E 
Finished in 0.011252 seconds. 

    1) Error: 
test_truth(CatTest): 
IndexError: string not matched 


1 tests, 0 assertions, 0 failures, 1 errors 

Je ne peux pas trouver le sens de l'erreur

IndexError: string not matched 

Mais le plus étrange est qu'hier, ça a marché!

Merci beaucoup pour votre aide.

Cordialement

(je travaille sous Ubuntu 9.04)

Répondre

44

Cela se produit, par exemple, lorsque vous essayez d'accéder à une variable de chaîne comme Hash par erreur.

s = "a string" 
s["position"] = "an other string" 

IndexError: string not matched 
    from (irb):5:in `[]=' 
    from (irb):5 

Additional Information

0

Comme le souligne Simone l'erreur se produit lorsque vous pensez que vous avez un hachage, mais vraiment une chaîne. C'est une véritable exception Ruby. J'ai eu l'exception en raison d'une faute de frappe dans mon code. Dans votre cas, je ne suis pas sûr de la cause, mais cela pourrait être quelque chose à voir avec une combinaison de versions de Ruby/Rails.

Vous pourriez essayer de classer Ruby ou Rails pour voir si cela le corrige.

Pour plusieurs versions de Ruby, je recommande fortement "RVM": http: //rvm.beginrescueend.com/