2018-8-31 Ruby on Rails 返回错误数据的解决方法(踩坑经验分享)

先讲结论:Rails.cache.clear 解决了问题

因为现在是 2018-8-31 的00:30,12点半了。我快速写一下然后之后来补充细节。

先讲结论

Rails.cache.clear

最后这一行代码解决了问题。

具体问题

首页有多个用户的"头像"和"名字"显示错误。
用户是修改了自己的自定义头像和名字的。不是一开始的默认空白头像和随机用户名。
但是现在变回去了。不是所有用户都是这样。只有个别用户是。

问题出现前做过什么操作

大约问题出现的十几分钟前。我在测试环境(测试环境和生成环境的数据库是两个。是分开的)
rails console 中跑

(0..50).to_a.each do |number|
  # 具体代码省略,因为一点也不重要。
  # 简单说就是:
  # 50次循环
  # 新建账户
  # 账户名就是 number
  # 密码是定死的
end

本意是新建50个测试账户,密码统一,用户名就只是 0 到 50。

造成了什么问题

生产环境中,首页的用户名和头像"显示"错误。变回了默认的格式
(默认头像+随机用户名)

问题排查

  1. 先进数据库看,发现数据是对的。只是网站上显示是错的。比如用户 14,正确的名字是葡萄糖酸。是用户自己写的名字。但是网站上显示是 user_230363。数据库里显示的是葡萄糖酸没错。
  2. 数据没问题那可能是代码问题,排查前端代码,后端代码,今天做的 commit 里改了什么。有哪些改动可能潜在造成了问题。结果是没有头绪。不觉得有哪些代码可能造成这个问题
  3. 数据+代码都没有问题。那么怀疑是 Ruby on Rails 的缓存造成了问题。只是个怀疑,还没有实锤。
  4. 谷歌查资料,发现 Rails.cache.clear 可以清空缓存。抱着试一试的心态跑了一下。
  5. 成功。首页数据显示正确。

补充一些相关信息。

尽管和这个问题的核心没有什么关联(缓存原因)。但还是提供一下供参考
后端:Ruby on Rais 5.2.0
前端:Vue.js 单页应用。使用了 Vuex + vue-router。

前后端代码完全分离了,放在两个文件夹里。用两个 Github 私有库进行管理。