首页 > 解决方案 > 机架错误 - RuntimeError: failed to get urandom in a Rails app (Rails 5.0.6, Ruby 2.5.5)

问题描述

我正在向本地运行的 Rails 5.0(.6) 应用程序发出大量 API 请求。它与 Rack 错误不一致地失败: RuntimeError: failed to get urandom

回溯到 SecureRandom 模块,而不是在应用程序中(特别是uuid方法)。从那里它在 ActionDispatch::RequestId 中。不幸的是,完整的回溯从我的终端历史记录中消失了,并且没有显示在日志中(因为它发生在 Rails 之外)。

从许多有效的请求以及它在不同地方失败的事实来看,我猜这是由于一些本地系统限制。

标签: ruby-on-railsruntime-errorrack

解决方案


在尝试了几个不同的修复后,我最终发现问题是我的打开文件限制。要检查它,请ulimit -n在终端中运行。我的设置为256。

我按照本文中的说明进行操作: https ://wilsonmar.github.io/maximum-limits/

具体说明从“Sierra 和较新版本”标题开始,然后转到“他们的权限需要是“-rw-r–r–”,由 sudo chmod 644 设置。” 在#5下。添加文件并更改所有权和权限后,我重新启动,打开文件限制现在为 524288。

我现在对快速 API 调用没有其他问题了。


推荐阅读