Как проверить безопасность потоков приложений Rails для Puma

Я хочу развернуть приложение Rails в Heroku с помощью веб-сервера Puma. Тем не менее, я не уверен, что все драгоценные камни являются потокобезопасными. Чтение исходного кода Gems не представляется возможным для нас.

Есть ли способ автоматически проверять все драгоценности на безопасность потоков? Или Puma жалуется/отображает конкретный журнал ошибок, если небезопасный код потока был выполнен/обнаружен?

Ответы

Ответ 1

Безопасность потока не может быть обнаружена вообще. Если бы какой-то способ обнаружить это автоматически, возможно, ваш компилятор/интерпретатор предупредит вас об этом. Условия гонки не могут быть обнаружены автоматическими системами, их можно даже трудно воспроизвести.

В зависимости от вашего переводчика:

  • CRuby имеет GIL, поэтому использование Puma с этим бессмысленно.
  • Если вы используете JRuby или Rubinius, чем вы, вероятно, можете выиграть от Puma, и, скорее всего, используемые вами драгоценные камни задокументировали их методы/классы для обеспечения безопасности потоков. В этом случае вам нужно всего лишь проверить свой код.