此错误最初发布在此处:https://rails.lighthouseapp.com/projects/8994/tickets/5713-ruby-19-ku-incompatible-with-mem_cache_store 现在,由于我们遇到了同样的问题,我将在这里复制一个问题,希望有人已经有了答案: 当Ruby 1.9以unicode模式(-Ku)启动时,mem_cache_store.rb无法解析:
/usr/local/ruby19/bin/ruby -Ku /usr/local/ruby-1.9.2-p0/lib/ruby/gems/1.9.1/gems/
activesupport-3.0.0/lib/active_support/cache/mem_cache_store.rb
/usr/local/ruby-1.9.2-p0/lib/ruby/gems/1.9.1/gems/activesupport-3.0.0/lib/active_support/
cache/mem_cache_store.rb:32: invalid multibyte escape: /[\x00-\x20%\x7F-\xFF]/
我们的情况几乎完全相同:当您将config.action_controller.cache_store设置为:mem_cache_store,并尝试运行测试,控制台或服务器时,您会收到此信息:
/Users/%username%/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/
cache/mem_cache_store.rb:32: invalid multibyte escape: /[\x00-\x20%\x7F-\xFF]/
任何想法如何避免这种情况?...
答案 0 :(得分:2)
在unicode模式下的Ruby 1.9将尝试将正则表达式解释为unicode。为避免这种情况,您需要为“无编码”传递正则表达式选项“n”:
ESCAPE_KEY_CHARS = /[\x00-\x20%\x7F-\xFF]/n
现在我们有了原始的8位编码(Ruby 1.8讲的唯一内容):
ruby-1.9.2-p136 :001 > ESCAPE_KEY_CHARS = /[\x00-\x20%\x7F-\xFF]/n.encoding
=> # <Encoding:ASCII-8BIT>
希望Rails团队修复此问题,因为现在你必须编辑文件。