生产环境中引入了一系列新的、神秘的 ActiveRecord 错误

Series of new, mysterious ActiveRecord errors introduced into production environment

我有 rails 3.2.13 应用程序,我已经在线使用了 5 年了。几周前,我做了一些微小的更改(html/css 视图更改),从那时起,我对 AWS 的所有部署似乎都已损坏。我收到了一系列 ActiveRecord 或渲染错误,这些错误似乎无处不在。令我感到困惑的是,我没有更改任何与 ActiveRecord 相关的内容或 Rails 的任何核心组件,但这些服务在大约 1% 的请求上失败了。

而且这不仅仅是 1 个错误,它是许多看似无关的错误,除了它们在我的系统上直到 6 月 3 日才发生的事实。当我跟踪错误的回溯时,它永远不会引导我我的代码中的一个问题,只是一个核心 Rails 文件。当我重新尝试 URL 时,它可能在几分钟前导致了一个错误,它对我来说工作正常。就好像潜在的问题只出现了片刻,然后又恢复正常了。而且我一开始无法弄清楚是什么导致了这些错误。以下是我现在经常看到的一些错误:

NoMethodError: undefined method 'empty?' for nil:NilClass

来自文件 /gems/activerecord-3.2.13/lib/active_record/associations/collection_association.rb:401

NoMethodError: undefined method 'has_key?' for nil:NilClass

来自文件 /gems/activerecord-3.2.13/lib/active_record/attribute_methods/read.rb:72

ActiveModel::MissingAttributeError: missing attribute: item_color

我在上面看到这个带有任何属性——显然该属性实际上在记录中,因为对 URL 的 99% 以上的请求已成功完成,它只发生在某些请求中。

NameError: '' is not allowed as an instance variable name

来自文件 /gems/actionpack-3.2.13/lib/abstract_controller/rendering.rb:126

NameError: undefined local variable or method 'params' for #<MyProduct>

来自文件 /gems/activemodel-3.2.13/lib/active_model/attribute_methods.rb:407

还有大约 20 个类似上述性质相似的错误。知道我可以做些什么来解决这个问题吗?

问题是由 maxminddb gem 引起的。我使用依赖于 libmaxminddb 的 hive_geoip2 gem 替换了它。

我仍然不确定为什么 maxminddb 会导致这些问题,但自从进行更改以来已经 24 小时了,问题似乎已经消失了。