2013-08-05 17 views

Trả lời

8

Đây là kết quả của trình gỡ lỗi Ruby có các quy tắc phân tích cú pháp khác nhau từ trình thông dịch Ruby. Trong thực tế, trình gỡ lỗi Ruby thường xuyên, được gọi từ irb hoặc lệnh ruby thể hiện hành vi tương tự này. Cách giải quyết, tuy nhiên, rất đơn giản: để tạo ra một chuỗi chữ bao gồm một dấu chấm phẩy duy nhất, chỉ thoát khỏi nó với một dấu chéo ngược:

$ irb 
> require 'debugger' 
=> true 
> debugger 
(rdb:1) ';' 
*** SyntaxError Exception: /usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/irb/context.rb:166: unterminated string meets end of file 
(rdb:1) '\;' 
";" 

Điều quan trọng cần lưu ý là Ruby debugger dòng lệnh phân tích cú pháp là không sự giống như trình phân tích cú pháp được sử dụng bởi thông dịch viên irb hoặc ruby: nó được thiết kế xung quanh phân tích cú pháp các lệnh gỡ lỗi như backtrace, break v.v. không để phân tích ngôn ngữ Ruby (có phần mở rộng dạng vỏ trong trường hợp irb). Nó có hỗ trợ hạn chế để đánh giá các biểu thức Ruby (hoặc kiểu Ruby). Đây là, tất nhiên, rất quan trọng để gỡ lỗi hiệu quả các chương trình Ruby. Tuy nhiên, bạn không nên mong đợi nó có thể phân tích cú pháp mọi thứ mà irb hoặc chính lệnh ruby sẽ có thể phân tích hoặc phân tích cú pháp mọi thứ theo cùng một cách. Trong một số trường hợp, như thế này, nó có thể xử lý các biểu thức nhất định nhưng chúng cần phải được thoát theo các quy tắc phân tích cú pháp của trình gỡ lỗi trái với chính ngôn ngữ Ruby.

Bảng điều khiển Rails được xây dựng trên đầu trang irb và do đó, vỏ Ruby và tôn trọng các quy tắc phân tích cú pháp của ngôn ngữ Ruby giống như irbruby.

+0

Tôi đã gặp vấn đề tương tự khi sử dụng gsub ('\;', ',') - thông dịch viên đã làm một việc, lời nhắc gỡ lỗi đã làm một việc khác – Mitch

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