2012-10-12 32 views
15

lỗi cú pháp, bất ngờ $ kết thúc, mong keyword_endCó cách nào nhanh chóng tìm thấy kết thúc bị thiếu trong Ruby không?

Chúng tôi đã có tất cả được! Giả sử rằng mã đủ thay đổi nhanh chóng tại git diff hoặc tương tự không rõ ràng, có cách nào dễ dàng để tìm thấy thiếu end (ngắn chuyển sang ngôn ngữ dựa trên thụt đầu dòng như Python) không?

FWIW, tôi sử dụng Sublime Text 2 làm trình chỉnh sửa của mình.

+1

tô sáng cú pháp vim và khả năng định dạng lại nhanh chóng thụt đầu dòng mã đã lấy đi tất cả nỗi đau đó cho tôi :-) Văn bản tuyệt vời có khả năng có nội dung tương tự, phải không? –

Trả lời

31

Nếu bạn đang sử dụng Ruby 1.9, hãy thử cờ -w khi chạy chương trình ruby ​​của bạn.

# 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 

Nguồn:

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

+2

Điều này chỉ hoạt động nếu bạn sử dụng thụt đầu dòng nhất quán? (+1) –

+0

Tôi đã xóa tất cả khoảng trắng và nó không cung cấp cho tôi bất kỳ lỗi định danh không khớp nào, vì vậy có vẻ như câu trả lời là có. – sunnyrjuneja

+0

Tôi có thể có tùy chọn này trong Rails không? Tôi đang chết bây giờ ... –

1

Nếu bạn đang sử dụng đường ray, bạn có thể chạy các tập tin có vấn đề đặc biệt với cờ -w.

Nếu bạn vẫn không thể tìm thấy sự không phù hợp vi phạm, thì cách giải quyết vấn đề này của tôi chỉ là nhận xét các đoạn mã cho đến khi tôi có thể cô lập khu vực có vấn đề.

Trên OS X, bạn có thể sử dụng lệnh +/để nhận xét phần văn bản được đánh dấu.

Các vấn đề liên quan