Đâ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ư irb
và ruby
.
Nguồn
2013-08-05 16:50:08
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