我构建了一个非常小的Rails 5.1.4(Ruby 2.3.1)应用程序。一旦我将其部署到生产环境中,我就会不时收到此特定错误:
RuntimeError: can't add a new key into hash during iteration
指向此处:
# rack/request.rb, line 67
def set_header(name, v)
@env[name] = v
end
我理解,当您在迭代该哈希时尝试向哈希添加新密钥时会发生此错误。由于@env
是哈希,因此它是有道理的。但是:
@env
上的迭代没有任何关系,它是一个简单的app.call(env)
调用链。完整的堆栈跟踪只包含机架中间件,可以在这里找到: https://gist.github.com/Nattfodd/e513122400b4115a653ea38d69917a9a
Gemfile.lock的: https://gist.github.com/Nattfodd/a9015e9204544302bf3959cec466b715
服务器正在使用puma运行,配置非常简单:只是线程和工作量:
threads 0, 5
workers 5
我目前的想法是:
答案 0 :(得分:0)
你可以粘贴完整的堆栈跟踪吗? 我的假设是从迭代环境的方法调用set_header。