Я спорадически получаю очень неприятную ошибку при написании спецификаций в 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
В следующий раз проверьте скрипт в шестнадцатеричном редакторе и выясните, какие байты находятся в этом месте. Это может дать ключ. –
Я открыл спецификацию в шестнадцатеричном редакторе (Hex Fiend) и добавил результаты - гексы - огромная тайна для меня, хотя я не знаю, что с этим делать. – max
Хороший шестнадцатеричный редактор покажет вам открытый текст и шестнадцатеричный бок о бок; hex - это всего лишь шестнадцатеричное представление каждого байта. Байты представлены значением 0-255, которое представлено в шестнадцатеричном виде как 00-FF. Нормальным символом пробела является байт 32, который является шестнадцатеричным. См., Например, http://i.imgur.com/abhz3SW.png. Может быть проще просто скопировать и вставить обидный текст в IRB-сеанс в виде строки и проверить его, результаты 'str.chars' и' str.bytes'. –