Rails странная ошибка => IndexError: строка не соответствует - PullRequest
22 голосов
/ 15 января 2010

У меня очень странное сообщение об ошибке. Я думаю, что это не из Ruby, а из системы Unix.

Итак, у меня есть следующий тестовый файл:

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

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

Итак, из файлов YAML в каталоге Fixtures ничего не выходит.

Когда я запускаю тест выше с командой:

$ ruby ./test/unit/cat_test.rb

Я получаю очень странный результат:

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

Я не могу найти значение ошибки

IndexError: string not matched

Но самое странное, что вчера это сработало!

Большое спасибо за вашу помощь.

Привет

(я работаю под Ubuntu 9.04)

Ответы [ 2 ]

48 голосов
/ 15 января 2010

Это происходит, например, когда вы пытаетесь получить доступ к строковой переменной как к хешу по ошибке.

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

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

Дополнительная информация

0 голосов
/ 04 февраля 2011

Как указывает Симона, ошибка возникает, когда вы думаете, что у вас есть хеш, но на самом деле это строка. Это настоящее исключение Ruby. У меня было исключение из-за опечатки в моем коде. В вашем случае я не уверен в причине, но это может быть связано с комбинацией версий Ruby / Rails.

Вы можете попробовать повысить / понизить оценку Ruby или Rails, чтобы увидеть, исправляет ли это.

Для нескольких версий Ruby я бы настоятельно рекомендовал "RVM": http://rvm.beginrescueend.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...