如何为 Puma 检查 Rails 应用的线程安全

How to check Rails app's thread safety for Puma

我希望使用 Puma 网络服务器将我的 Rails 应用程序部署到 Heroku。但是,我不太确定是否所有的 Gem 都是线程安全的。阅读所有 Gems 的源代码对我们来说不是可行的选择。

有没有办法自动检查所有 Gem 的线程安全性?或者 Puma complain/display 如果线程不安全代码是 executed/detected 特定的错误日志?

一般检测不到线程安全。如果有某种方法可以自动检测到它,您的 compiler/interpreter 可能会警告您。 Race conditions 无法被自动系统检测到,甚至难以复制。

取决于您的口译员:

  • CRubyGIL,所以用 Puma 是没有意义的。
  • 如果您使用的是 JRubyRubinius,那么您可能会从 Puma 中受益,而且您使用的 gem 很可能已经记录了它们的 methods/classes 线程安全性。在这种情况下,您只需检查您的代码即可。