2013-09-22 92 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

是的!我重新寫了整個行,​​它的工作原理!許多很多非常感謝! –

相關問題