2012-10-12 13 views
15

błąd składni, nieoczekiwany koniec $, spodziewając keyword_endCzy istnieje szybki sposób na znalezienie brakujących końców w Ruby?

Wszyscy tam byli! Zakładając, że wystarczy zmienić kod, że szybkie spojrzenie na git diff lub coś podobnego nie czyni tego oczywistym, czy istnieje prosty sposób na znalezienie brakującego end (brak przełączania na język oparty na wcięciach, taki jak Python)?

FWIW, używam Sublime Text 2 jako mojego edytora.

+1

Podkreślanie składni vim, a możliwość szybkiego sformatowania wcięcia kodu zabrała mi cały ten ból :-) Sublime Text może mieć coś podobnego, prawda? –

Odpowiedz

31

Jeśli używasz Ruby 1.9, spróbuj flagę -w gdy uruchomiony program Ruby.

# 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 

Źródło:

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

+2

Czy działa to tylko wtedy, gdy używasz spójnego wcięcia? (+1) –

+0

Usunąłem wszystkie białe spacje i nie dało mi to błędów niezgodności, więc wygląda na to, że odpowiedź brzmi "tak". – sunnyrjuneja

+0

Czy mogę mieć tę opcję w Railsach? Umieraję teraz ... –

1

Jeśli używasz szyny, można uruchomić plik problematyczny specjalnie z -w flagi.

Jeśli nadal nie możesz znaleźć niezgodnego problemu, to moim sposobem rozwiązania tego problemu jest skomentowanie fragmentów kodu, dopóki nie wyodrębnię problematyczny obszar.

W systemie OS X można użyć polecenia + /, aby skomentować wyróżniony fragment tekstu.

Powiązane problemy