Tôi gặp phải sự cố lạ khi đang sử dụng mô-đun ActiveRecord :: Store trong ứng dụng Ruby on Rails. Theo tôi hiểu, mô-đun này sử dụng phương pháp 'serialize' dưới mui xe để nó chỉ tuần tự hóa dữ liệu của bạn thành định dạng yaml với ruby được tích hợp sẵn trong gem.Ruby - LoadError enc/trans/single_byte
Nó hoạt động OK hầu hết thời gian, nhưng đôi khi tôi nhận được 500 lỗi với thông báo sau:
LoadError (cannot load such file -- enc/trans/single_byte):
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:27:in `write'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:27:in `end_document'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:27:in `visit_Psych_Nodes_Document'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:20:in `block in visit_Psych_Nodes_Stream'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:20:in `each'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:20:in `visit_Psych_Nodes_Stream'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/nodes/node.rb:46:in `yaml'
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych.rb:243:in `dump'
Như bạn thấy, tôi sử dụng rbenv và ruby 1.9.3-p286. Hệ thống của tôi là Ubuntu 11.10. Tệp bắt buộc tồn tại ~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/i686-linux/enc/trans/single_byte.so
. Lỗi tương tự tôi gặp phải với ruby 1.9.3-p194. Và phần lạ nhất của vấn đề này là lỗi này xảy ra theo thời gian.
Vì vậy, có thể ai đó cũng gặp sự cố này và đã tìm thấy giải pháp? Hoặc nó có vẻ giống như một lỗi trong tâm trí và tôi nên nộp nó cho người bảo trì của nó?
Cảm ơn bạn đã giúp đỡ!
CHỈNH SỬA: vấn đề không liên quan trực tiếp đến đá quý tâm linh. Đó là vấn đề chung với thiết lập ruby bất thường. Xem câu trả lời được chấp nhận bên dưới để biết chi tiết.
rking, cảm ơn lời khuyên của bạn! Bạn đã chỉ cho tôi đúng hướng. Nó được giải quyết. Vấn đề là tầm thường: Tôi sử dụng các ký tự không phải ASCII trong mã nguồn của mình vì vậy tôi phải bật chế độ unicode trong trình thông dịch ruby (thông qua các chú thích ma thuật). Nhưng vì thiết lập bất thường (thư mục nhà nơi ruby đã được cài đặt đóng cửa từ truy cập bởi người dùng khác) ruby không thể sử dụng nội dung của nó để chuyển mã của tôi. Giải pháp: thư mục mở nơi ruby được cài đặt cho ít nhất người dùng khởi chạy trình thông dịch ruby. rking, bạn có thể hoàn thành câu trả lời của bạn với thông tin này để tôi có thể chấp nhận nó như là một giải pháp cuối cùng? Tôi hi vọng nó giúp ích cho ai đó. – rgt600