2018年50周: 墨菲定律

墨菲定律: 凡是可能出错的地方就一定会出错。

最近团队花了 6 周上线了一个项目,项目中有两个外部依赖。有个资深的同事在项目初期调研其中一个项目时指出,需要尽快获取生产环境的 API,因为曾经踩过这样的坑,在得到线上环境时发现线上环境和测试环境运作方式不同,结果也不一样。在他的坚持下,在上线前一周就获得了该模块的生产环境。

墨菲定律发生在另一个模块。这个模块不是我们团队开发的,但是在一个公司内部,所以就没有那么重视。在上线前一天,我们获得了对应生产环境的 API,结果发现真的和测试环境返回的结果不一样。我们用一种简单的思路很快修复了这个问题,但是我们真的应该提前要到账号,将风险降到最低。

这次上线发生的另外一个问题,也值得说一下。在我们连调时发现,线上环境用户收不到邮件,测试环境一切正常。起初我们怀疑是线上的邮件服务器配置出了问题,花了很长时间调试,结果邮件服务器没问题。最后定位到的问题是,邮件没有填写收件人😳,邮件服务器调用 API 时没有获取收件人信息。最后发现,API 接口做了调整,而服务器却没有更新。(契约测试也能发现这个问题,但我们没有写。)

API 正是我开发的模块,每次更新后我都会将 API 文档发给大家 review,但是由于上线时间紧张,不是所有模块都能有足够的时间去查看 API 文档。这给我的一个教训是:以后开发 API 时,如果做了修改,需要及时和相关人进行面对面的沟通,而不仅仅是 review。

其实在测试环境 bugbash 时应该发现 API 不一致的问题,但是在测试环境,我们将邮件发给了一个固定组,而没有发给个人,要是换一个邮件地址来测试,就能避免这个问题。

Rspec 如何 mock update 方法更新自己?

Rspec 用来 mock 对象方法的语法如下: allow(model).to receive(:message).and_return(result) 允许 model 接收 message 方法返回 result 结果。那么,如何来 mock update 方法更新对象自己呢?

2018年49周: 认真阅读文档

这周继续证明了一件事:认真读文档真的非常重要。

2018年48周: 时间挤挤还是有的

时间挤挤还是有的,不管你有多忙,只要你做的时候自己比较喜欢。

这两周很忙,但是仍然抽出实践重读了《射雕英雄传》,也没有耽误干活,关键是看有没有兴趣。

这次读《射雕英雄传》,感觉故事太短,读完意犹未尽。第一次读的时候,记得是一本很厚很厚的书,一个很长很长的故事。

2018年47周: 辛苦工作

这两周做了一个 rails 项目,有重新认识 rails 之感,接着重新认识了一下自己。写了一篇博客记录了一下遇到的问题。