2013-09-22 68 views
6

我有一段代码,我试图运行rspec。Rails 4 - 语法错误,意外tidENTIFIER,预计输入结束

require 'spec_helper' 

    describe "User" do 
     before { @user = User.new(name: "Example User", email: "[email protected]", password: "foobar", password_confirmation: "foobar") } 
     subject { @user } 

     it { should respond_to(:name)} 
    end 

我收到以下错误

c:\Sites\sample_app>rspec spec/models/user_spec.rb 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rspec-core-2.13.1/lib/rspec 
/core/configuration.rb:819:in `load': c:/Sites/sample_app/spec/models/user_spec. 
rb:1: syntax error, unexpected tIDENTIFIER, expecting end-of-input (SyntaxError) 
before { @user...er' 

现在我重新输入一个新的文件,测试和运行,并没有错误。我想有一些编码问题,或者我没有了解到我没有得到的东西。有没有人能够解释这个问题?

+2

错误来自第1行,您要求spec_helper,那么您可以共享spec_helper代码吗? –

+0

是的,因为错误说“user_spec.rb:1”...我写错了这个问题吗?奇怪它已经有-1。只是寻找一些帮助:/ –

+1

请重新阅读来自@SachinSingh的评论:-)你被要求发布你的'spec_helper.rb'文件,因为这可能是问题的源头(没有双关语意)。 –

回答

18

你似乎确实被“零宽度空间问题”咬了。这是极端令人沮丧,我知道。你会认为“展示空白空间”应该关注这个问题,特别是在像Sublime这样先进的编辑器中。

无论如何,要检测Sublime 2中这些字符的存在,可以使用this plugin.来显示它们。

另外,我在几个月前的这个问题上浪费了几个小时,当时我从网站上复制/粘贴了一些代码,这些代码中有一个小问题。

我在Sublime 2网站搜索了与此相关的任何帖子(例如功能请求等),但没有找到任何东西,所以我不知道这是否在他们的雷达上。

注意:此答案的原始版本假定零宽度空格字符与非空白字符相同,但不是。由于它们在显示中“占用空间”(即“看起来像”一个空间),非空白空间虽然仍会产生语法错误,但更易于检测。还有“零宽度非破坏空间”,这仍然不同。虽然很容易在Mac上输入非破坏空间(即Option-Space),但我知道无法输入任何零宽度空间。

+2

救生员....谢谢老兄:) –

+0

是的!我重新写了整个行,​​它的工作原理!许多很多非常感谢! –

相关问题