rails:dyld[...]:缺少名为

问题描述 投票:0回答:1

我将 Rails 项目从 5 升级到 6,现在 Rails 命令在我的 M2 mac 上抛出此错误:

dyld[...]: missing symbol called

看起来像是 Node 和 mysql gem 的某种问题。当我使用 SQLite 创建新项目时,一切运行正常:

% rbenv versions
* 3.1.2 
% rails -v                    
Rails 6.1.7.3
% rails new test
% rails s

但是当我对 mysql db 执行相同操作时,安装在 webpacker install 上结束:

% rails new test2 -d mysql
...
Bundle complete! 17 Gemfile dependencies, 81 gems now installed.
  run  bundle binstubs bundler
  rails  webpacker:install
dyld[25919]: missing symbol called

我有最新的 mysql2 gem 版本:

gem "mysql2", '~> 0.5.5'

我尝试了我发现的所有其他技巧:重新安装node、yarn、切换到x64节点版本、删除node_modules..所有这些。目前还没有成功

node.js ruby-on-rails macos apple-m1 mysql2
1个回答
8
投票

好的,我找到了解决方案。确实是mysql2 gem的问题。此 gem 的标准安装不适用于自制软件安装的 mysql。

如果您之前安装了 gem 并且导致出现问题,请先卸载此特定版本:

gem uninstall mysql2 -v 0.5.5

然后再次安装,但使用以下设置:

gem install mysql2 -v '0.5.5' -- --with-mysql-config=$(brew --prefix mysql)/bin/mysql_config --with-ldflags="-L$(brew --prefix zstd)/lib -L$(brew --prefix openssl)/lib" --with-cppflags=-I$(brew --prefix openssl)/include

填写您需要安装的gem的版本,而不是0.5.5。我使用0.5.5,因为它是目前的最新版本。 “brew --prefix ...”将自动添加特定文件的路径。

我意识到这是一个非常具体的问题。可悲的是,“缺失的符号称为”可能意味着任何东西。如果您看到相同的错误,我建议您找到一个可以运行的应用程序版本并比较它们之间的差异。这可能意味着在不同的机器上尝试,删除一些宝石,尝试不同的版本..这应该为您指明正确的方向。

© www.soinside.com 2019 - 2024. All rights reserved.