2015-07-25 2 views
0

Я спорадически получаю очень неприятную ошибку при написании спецификаций в RubyMine & Atom, где кажется, что есть недопустимый символ пробела, поэтому ruby ​​оценивает первый (пустой) символ как часть имени метода.RSpec - недопустимый пробел символа вызывает неопределенный метод `should '?

1) Activity 
    Failure/Error: it { should belong_to :micropost } 
    NoMethodError: 
     undefined method ` should' for #<RSpec::ExampleGroups::Activity:0x007fd00e41bd20> 
    # ./spec/models/activity_spec.rb:5:in `block (2 levels) in <top (required)>' 

Обратите внимание на пространство перед ' should' в сообщении об ошибке.

Я попытался включить невидимые символы, и я не вижу ничего другого, кроме обычного пространства.

Удаление первого места внутри блока it и попадание в пробел устраняет проблему, но это довольно раздражает, чтобы вернуться и исправить блоки все время.

Любые идеи о том, что вызывает ошибку?

Добавлено

По предложению я добавил открыл спецификацию в шестнадцатеричном редакторе. Нарушивший байты C2 A0 -

it { should belong_to :micropost } 

69 74 20 7B C2 A0 73 68 6F 75 6C 64 20 62 65 6C 6F 6E 67 5F 74 6F 20 3A 6D 69 63 72 6F 70 6F 73 74 20 7D 
+0

В следующий раз проверьте скрипт в шестнадцатеричном редакторе и выясните, какие байты находятся в этом месте. Это может дать ключ. –

+0

Я открыл спецификацию в шестнадцатеричном редакторе (Hex Fiend) и добавил результаты - гексы - огромная тайна для меня, хотя я не знаю, что с этим делать. – max

+0

Хороший шестнадцатеричный редактор покажет вам открытый текст и шестнадцатеричный бок о бок; hex - это всего лишь шестнадцатеричное представление каждого байта. Байты представлены значением 0-255, которое представлено в шестнадцатеричном виде как 00-FF. Нормальным символом пробела является байт 32, который является шестнадцатеричным. См., Например, http://i.imgur.com/abhz3SW.png. Может быть проще просто скопировать и вставить обидный текст в IRB-сеанс в виде строки и проверить его, результаты 'str.chars' и' str.bytes'. –

ответ

0

Оказывается, наиболее вероятная причина была то, что мои толстые пальцы масла били альт (опция) + пробела. Который также объясняет, почему это происходило даже после того, как я переключил редакторов.

Я решил проблему, загрузив Karabiner и активировав Non Breaking Space To Normal Space.

+1

См. Http://superuser.com/questions/78245/how-to-disable-the-option-space-key-combination-for-non-breaking-spaces для решения о том, как отключить эту комбинацию клавиш на OS X Не уверен, какая ОС вы на самом деле! –

+0

Спасибо, я на OS-X – max

Смежные вопросы