我的ruby脚本中的第三行
# encoding: utf-8
require "mail"
导致以下错误
/usr/local/share/gems1.9/gems/json-1.8.1/lib/json/pure/parser.rb:242:in `rescue in parse_string': Caught Encoding::CompatibilityError at '[{"content-type":"ap': incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string) (JSON::ParserError)
from /usr/local/share/gems1.9/gems/json-1.8.1/lib/json/pure/parser.rb:213:in `parse_string'
from /usr/local/share/gems1.9/gems/json-1.8.1/lib/json/pure/parser.rb:257:in `parse_value'
from /usr/local/share/gems1.9/gems/json-1.8.1/lib/json/pure/parser.rb:121:in `parse'
from /usr/local/share/gems1.9/gems/json-1.8.1/lib/json/common.rb:155:in `parse'
from /usr/local/share/gems1.9/gems/json-1.8.1/lib/json/common.rb:334:in `load'
from /usr/local/share/gems1.9/gems/mime-types-2.3/lib/mime/types/loader.rb:210:in `load_from_json'
from /usr/local/share/gems1.9/gems/mime-types-2.3/lib/mime/types/loader.rb:61:in `block in load_json'
from /usr/local/share/gems1.9/gems/mime-types-2.3/lib/mime/types/loader.rb:60:in `each'
from /usr/local/share/gems1.9/gems/mime-types-2.3/lib/mime/types/loader.rb:60:in `load_json'
from /usr/local/share/gems1.9/gems/mime-types-2.3/lib/mime/types/loader.rb:87:in `load'
from /usr/local/share/gems1.9/gems/mime-types-2.3/lib/mime/types.rb:280:in `load_default_mime_types'
from /usr/local/share/gems1.9/gems/mime-types-2.3/lib/mime/types.rb:307:in `<class:Types>'
from /usr/local/share/gems1.9/gems/mime-types-2.3/lib/mime/types.rb:62:in `<top (required)>'
from /usr/local/share/ruby19/site_ruby/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/ruby19/site_ruby/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/gems1.9/gems/mail-2.6.1/lib/mail.rb:9:in `<module:Mail>'
from /usr/local/share/gems1.9/gems/mail-2.6.1/lib/mail.rb:2:in `<top (required)>'
from /usr/local/share/ruby19/site_ruby/rubygems/core_ext/kernel_require.rb:135:in `require'
from /usr/local/share/ruby19/site_ruby/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
from /usr/local/share/ruby19/site_ruby/rubygems/core_ext/kernel_require.rb:144:in `require'
from Mailer.rb:3:in `<main>'
请注意,此错误仅发生在使用Ruby 1.9.3的AWS上生成。在使用Ruby 2进行开发时,它可以正常工作。
答案 0 :(得分:1)
很抱歉,这不是解决方案,只是解释为什么它与ruby 2.0的工作正确但不能与1.9.3一起解决:</ p>
由于ruby 2.0所有脚本都是utf-8编码的(除非定义了其他内容)
什么是Ruby 2.0.0
[...]
语言核心功能
[...]
- UTF-8默认编码,可以省略许多神奇的评论
来源:https://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/
在Ruby 1.9中,UTF-8不是默认设置,因此UTF-8中的脚本与您调用的脚本之间可能存在编码差异。
答案 1 :(得分:0)
我解决了这个问题,将其添加到我的gemfile中:
gem 'oj'
gem 'oj_mimic_json'
然后运行bundle install
并尝试再次运行服务器