2010-01-15 9 views
19

Tengo un mensaje de error muy extraño. Creo que no proviene de Ruby, sino del sistema Unix.Rails error extraño => IndexError: cadena no coincide

lo tanto, tengo el siguiente archivo de prueba:

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

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

Por lo tanto, nada procedente de los archivos YAML en el directorio de fixtures.

Cuando ejecuto la prueba anterior con el comando:

$ ruby ./test/unit/cat_test.rb 

consigo el resultado muy extraño:

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 

no puedo encontrar el significado del error

IndexError: string not matched 

Pero lo más extraño es que ayer, funcionó!

Muchas gracias por su ayuda.

Saludos

(estoy trabajando bajo Ubuntu 9.04)

Respuesta

44

Esto sucede, por ejemplo, cuando se intenta acceder a una variable de cadena como un hash por error.

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

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

Additional Information

0

Como Simone señala el error se produce cuando usted piensa que tiene un hash pero en realidad es una cadena. Es una excepción genuina de Ruby. Tuve la excepción debido a un error tipográfico en mi código. En su caso, no estoy seguro de la causa, pero podría ser algo relacionado con una combinación de versiones de Ruby/Rails.

Puede probar subir/bajar la clasificación de Ruby o Rails para ver si eso lo soluciona.

Para múltiples versiones de Ruby, recomendaría "RVM": http: //rvm.beginrescueend.com/

Cuestiones relacionadas