M1 Mac升级Ruby 3.0.x+Rails时Debase报_RHASH_EMPTY_P符号缺失错误
M1 Mac Rails项目debase编译报错
symbol not found in flat namespace '_RHASH_EMPTY_P' 解决方案 该报错由低版本debase未适配Apple Silicon架构下的Ruby 3.x版本导致,_RHASH_EMPTY_P为Ruby内部哈希操作符号,0.2.4.1及更早版本的debase未兼容M1芯片环境下Ruby 3.0+的头文件变更。Docker环境可正常运行是因为M1设备上的Docker默认运行x86_64架构镜像,适配旧版debase。
解决方案
- 方案1:升级debase到兼容版本
在Gemfile中指定debase最低版本为0.2.5.beta2,限定开发环境即可:
执行gem 'debase', '>= 0.2.5.beta2', group: :developmentbundle update debase重新安装后,即可正常启动项目。 - 方案2:使用Rosetta 2转译运行
右键点击终端应用,选择「显示简介」,勾选「使用Rosetta打开」,重启终端后重新执行bundle install安装依赖,再运行rails s启动项目。 - 方案3:临时关闭调试依赖
若当前不需要调试功能,直接注释Gemfile中的debase、ruby-debug-ide相关依赖,执行bundle install后即可正常启动。
内容的提问来源于stack exchange,提问作者Josh Mathews
相关产品推荐
相关产品推荐

