Ruby on rails Rails.cache.delete中的ArgumentError(UTF-8中的字节序列无效)
我陷入了一个无法解释的错误之中 该错误仅在DigitalOcean服务器的生产环境中发生。Rails 5.0 Ruby 2.2.3。 在开发中,Ubuntu运行良好,测试无误,缓存性能良好 问题是在生产中执行Ruby on rails Rails.cache.delete中的ArgumentError(UTF-8中的字节序列无效),ruby-on-rails,caching,ruby-on-rails-5,Ruby On Rails,Caching,Ruby On Rails 5,我陷入了一个无法解释的错误之中 该错误仅在DigitalOcean服务器的生产环境中发生。Rails 5.0 Ruby 2.2.3。 在开发中,Ubuntu运行良好,测试无误,缓存性能良好 问题是在生产中执行Rails.cache.delete\u matched时 我已经尝试了所有的组合,我无法摆脱这个错误 缓存: retorn_text=Rails.cache.fetch("Translation/#{company_id}/#{text_a_traduir}/#{head_locale}/
Rails.cache.delete\u matched
时
我已经尝试了所有的组合,我无法摆脱这个错误
缓存:
retorn_text=Rails.cache.fetch("Translation/#{company_id}/#{text_a_traduir}/#{head_locale}/#{locale}", expires_in: 1.year) do
...
end
在保存后的回调中,我想从中删除所有缓存
“翻译/{company_id}/
做:
Rails.cache.delete_matched("Translation/#{company_id}/.+")
或
或
或
还有很多我不记得的其他选择
所有这些都会抛出错误ArgumentError(UTF-8中的字节序列无效)
谢谢最后看来我可以让它工作了,我不确定解决方案是这两个还是只有一个:
Rails.cache.delete_matched(/Translation\/#{company_id}\/.+/)
--
此更改和此tmp清除后,它将正常工作
--
一个月后,我不得不再次执行RAILS\u ENV=production RAILS tmp:clear
,以避免出现错误。因此它没有得到解决,但现在,我知道,与清除tmp相比,问题暂时消失了
--
没有与delete_匹配的解决方案,即使强制转换为UTF_8(text.encode!(编码::UTF_8,{无效::替换,替换:“”)
已解决使用delete
方法清除缓存未delete\u匹配
Rails.cache.delete_matched(/Translation\/4\/.*/)
reg_exp=/Translation\/#{company_id}\/.*/
Rails.cache.delete_matched(reg_exp)
Rails.cache.delete_matched(/Translation\/#{company_id}\/.+/)
rails tmp:clear