Есть ли быстрый способ найти недостающие концы в Ruby?
синтаксическая ошибка, неожиданный конец $, ожидающий keyword_end
Мы все были там! Если предположить, что достаточно кода изменилось, что быстрый взгляд на git diff
или тому подобное не делает его очевидным, есть ли простой способ найти отсутствующий end
(не дожидаясь перехода на язык с отступом, например Python)?
FWIW, я использую Sublime Text 2 в качестве моего редактора.
Ответы
Ответ 1
Если вы используете Ruby 1.9, попробуйте флаг -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
Если вы используете рельсы, вы можете запустить проблемный файл специально с флагом -w.
Если вы все еще не можете найти несоответствующее несоответствие, то мой путь к решению этой проблемы - это просто комментировать фрагменты кода, пока я не смогу выделить проблемную область.
В OS X вы можете использовать команду +/для комментирования выделенной части текста.