使用 rails generate 创建控制器会导致奇怪的错误

Creating a controller with rails generate is causing a strange error

我今天尝试启动一个简单的 rails 应用程序来刷新我的知识并 运行 进入一个非常难 运行ge 的问题...

  1. 已创建应用(rails 新应用名称)。
  2. 已创建具有索引操作的控制器(rails g 控制器站点索引)。
  3. 将根路由设置为站点#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

我试过(未成功):

什么是st运行ge,如果我手动创建控制器和视图,一切正常!

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

我遇到了同样的问题,是的,文件存在。我将我的项目回滚到 ffi '~> 1.12.2',它再次运行良好。

看来问题与libffi版本冲突有关。

解决方法:gem inst ffi -- --disable-system-libffi

我提出了一个问题,请看这里:https://github.com/ffi/ffi/issues/791