升级到macOS Mojave,现在在Rails控制台中出现错误

时间:2018-10-23 04:55:35

标签: ruby-on-rails macos fork macos-mojave

两天前已升级到莫哈韦沙漠。 Rails服务器正在运行,但是当我尝试运行activerecord东西时,出现错误。当我尝试运行“ Account.last”或“ Account.new”或其他任何内容时,它会将我踢出局并给出以下错误消息

objc[38551]: +[__NSPlaceholderDictionary initialize] may have been in 
progress in another thread when fork() was called.
objc[38551]: +[__NSPlaceholderDictionary initialize] may have been in 
progress in another thread when fork() was called. We cannot safely 
call it or ignore it in the fork() child process. Crashing instead. Set 
a breakpoint on objc_initializeAfterForkError to debug.

Ruby 2.3.4

Rails 5.1.6

卸载了一些宝石,并尝试了但同样的错误。最近两天真让我丧命。升级后,我不仅是面临这一问题的人。

3 个答案:

答案 0 :(得分:1)

将此export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES放入您的~/.bash_profile

如果您使用的是oh-my-zsh,请编辑~/.zshrc并将其 export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES位于文件开头

,然后重新加载您的zsh配置$ source ~/.zshrc

答案 1 :(得分:1)

您在使用Postgres吗?

在移动到新计算机(运行macOS Catalina)后,以群集模式运行puma(指定工作程序)时,我开始收到此错误。这个问题似乎是我的psql版本造成的。 OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES bundle exec rails s puma确实有效,但是我不满意,因为没有该env变量,一切都可以正常工作。

我将psql版本从12移到9.5,并重建了pg gem,它解决了没有env变量的问题:

brew uninstall postgres
brew install postgresql@9.5
brew link postgresql@9.5 --force
gem uninstall pg
bundle install

答案 2 :(得分:0)

升级到Mojave后,今天的同事遇到了同样的问题。

问题得到解决从独角兽服务器切换到puma 服务器。 因此,为了进行日常工作,您可以将开发/测试中的服务器更改为puma。

这不是一个永久性的解决方案,但可以帮助您找到问题所在的位置,并消除开发人员的工作流程。