【问题标题】:Series of new, mysterious ActiveRecord errors introduced into production environment生产环境中引入了一系列新的、神秘的 ActiveRecord 错误
【发布时间】:2018-06-16 21:54:00
【问题描述】:

我有 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 个类似的错误。知道我可以做些什么来解决这个问题吗?

【问题讨论】:

  • 也许在新部署中进行了这些更改,一些 gem 已更新,您的部署过程是否有可能?
  • 您是否将 Gemfile.lock 保留在版本控制中?

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-12-26
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2021-07-04
    相关资源
    最近更新 更多