在macOS上重新启动池启动失败

时间:2017-12-15 11:00:13

标签: ruby-on-rails resque macos-high-sierra

resque-pool无法在macOS High Sierra上启动resque工作人员

错误消息

bjc [5921]:调用fork()时,另一个线程中可能正在进行+ [__ NSPlaceholderDictionary initialize]。我们无法在fork()子进程中安全地调用它或忽略它。反而崩溃了。在objc_initializeAfterForkError上设置断点以进行调试。

1 个答案:

答案 0 :(得分:1)

通过the accepted answer for this Stackexchange question研究并找到答案 - 它与Unicorn有关,但非常适用于我的问题。

Apple在分叉过程中对High Sierra进行了安全相关的更改。

Holger的回答提供了一种解决方法,可通过环境变量禁用High Sierra中的新安全功能。

OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

这解决了我的问题。我现在能够通过resque-pool启动resque工作人员。

红宝石

有关Ruby context is discussed here

问题的更多详细信息

raised an issue on the resque-pool gem。但可能在Ruby中需要解决的问题更多。我不够专业......