2012-10-12 34 views
15

語法錯誤,意想不到的$結束,預計keyword_end有沒有一種方法可以在Ruby中找到缺失的結尾?

我們都在那裏!假設有足夠的代碼改變,快速瀏覽一下git diff或類似的東西並不能說明問題,是否有一種簡單的方法可以找到缺少的end(切換到Python等基於縮進的語言)?

FWIW,我使用Sublime Text 2作爲我的編輯器。

+1

vim語法突出顯示,以及快速重新格式化代碼縮進的能力,爲我帶走了所有的痛苦:-) Sublime Text可能有類似的東西,對嗎? –

回答

31

如果您使用的是Ruby 1.9,請在運行ruby程序時嘗試-w標誌。

# t.rb 
class Example 
    def meth1 
    if Time.now.hours > 12 
     puts "Afternoon" 
    end 
    def meth2 
    # ... 
    end 
end 

ruby t.rb 
=> t.rb:10: syntax error, unexpected $end, expecting keyword_end 

ruby -w t.rb 
=> t.rb:5: warning: mismatched indentations at 'end' with 'if' at 3 
    t.rb:9: warning: mismatched indentations at 'end' with 'def' at 2 
    t.rb:10: syntax error, unexpected $end, expecting keyword_end 

來源:

http://pragdave.blogs.pragprog.com/pragdave/2008/12/ruby-19-can-check-your-indentation.html

+2

這是否只有在使用一致的縮進時才起作用? (+1) –

+0

我刪除了所有的空白,它沒有給我任何不匹配的識別錯誤,所以看起來答案是肯定的。 – sunnyrjuneja

+0

我可以在Rails中使用這個選項嗎?我現在快死了...... –

1

如果您使用的軌道,可以專門-w標誌運行有問題的文件。

如果你仍然無法找到違規的不匹配,那麼我解決這個問題的方法就是評論大塊的代碼,直到我可以找出問題區域。

在OS X上,您可以使用命令+ /來註釋突出顯示的文本。

相關問題