创建带有 rails generate 的控制器会导致一个奇怪的错误

K.D*_*BTC 6 ruby rubygems ruby-on-rails dyld

我今天尝试启动一个简单的 rails 应用程序来刷新我的知识,但遇到了一个非常奇怪的问题......

  1. 创建的应用程序(rails 新的应用程序名称)。
  2. 创建具有索引操作的控制器(rails g 控制器站点索引)。
  3. 将根路由设置为 site#index。
  4. 启动 Rails 服务器。

服务器尝试呈现站点的索引视图,但突然中止并出现以下错误:

dyld: lazy symbol binding failed: Symbol not found: _ffi_prep_closure_loc
Referenced from: /Users/Marco/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle
  Expected in: /usr/lib/libffi.dylib

dyld: Symbol not found: _ffi_prep_closure_loc
  Referenced from: /Users/Marco/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle
  Expected in: /usr/lib/libffi.dylib
Run Code Online (Sandbox Code Playgroud)

我试过(不成功):

  • 升级我的 ruby​​ 版本,然后我的 rails 版本升级到最新版本。
  • 重新安装我所有的宝石。
  • 删除 ffi_c.bundle 的路径并重新安装 ffi。

奇怪的是,如果我手动创建控制器和视图,一切正常!

我看到了一个关于某个相关问题的建议,试图将我机器上的 C 编译器更改为默认值,但我不明白为什么有必要这样做,我想更深入地了解正在发生的事情。

小智 2

我遇到了同样的问题,是的,该文件存在。我将项目回滚到 ffi '~> 1.12.2',它再次正常工作。