两天前已升级到莫哈韦沙漠。 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
卸载了一些宝石,并尝试了但同样的错误。最近两天真让我丧命。升级后,我不仅是面临这一问题的人。
答案 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。
这不是一个永久性的解决方案,但可以帮助您找到问题所在的位置,并消除开发人员的工作流程。