Ruby Racer:惰性符号绑定失败

10

我正在运行El Capitan(全新安装),使用Ruby 2.2.2和Rails 4.2.1应用程序。一开始在安装libv8时遇到了问题,不得不使用brew install v8和gem install libv8(版本)并加上systemv8标志来强制安装。Bundle正常工作,并安装所有gem依赖项。

但是当我尝试加载rails sbundle exec thin start以启动我的应用服务器时,出现以下错误。

dyld: lazy symbol binding failed: Symbol not found: __ZN2v82V821AddGCPrologueCallbackEPFvNS_6GCTypeENS_15GCCallbackFlagsEES1_
  Referenced from: /Users/shakycode/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/therubyracer-0.12.2/v8/init.bundle
  Expected in: flat namespace

dyld: Symbol not found: __ZN2v82V821AddGCPrologueCallbackEPFvNS_6GCTypeENS_15GCCallbackFlagsEES1_
  Referenced from: /Users/shakycode/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/therubyracer-0.12.2/v8/init.bundle
  Expected in: flat namespace

我正在谷歌和搜索答案,但迄今为止没有太多有效的解决方案。 我的另一台机器升级到El Capitan后没有问题,但是这次干净的安装在libv8 / v8 / therubyracer方面存在问题。

你有什么想法可以帮助我调试这个问题吗? 我想编写代码。


1
我也遇到了这个问题。 :/ - ihgann
1
我也遇到了这个问题,ELCapiton -ruby 2.1.4p265。 - Nishant
3个回答

7

对我来说,只是重新安装therubyracer并没有奏效。完整的步骤如下:

gem uninstall therubyracer libv8
gem install libv8 therubyracer -- --with-system-v8

2

我也遇到了这个问题,解决方法是卸载并重新安装therubyracer

gem uninstall therubyracer
gem install therubyracer -v '0.12.2' -- --with-system-v8

对我来说,这是由于Gemfile中libv8的更新触发的。在更新后,bundle install似乎没有任何问题,但每当我尝试在命令行上执行任何操作时,都会看到与OP相同的错误。


2
我也应该发布这个答案。在安装ruby racer之前,我需要使用system-v8重新构建libv8。 - nulltek

1

我使用 mini_racer gem 时遇到了类似的错误。我将版本从 3.0.1 更新到 4.0.0,问题得以解决。现在没有任何错误。这通常是版本的问题。有时 gem 的版本与我们的操作系统版本不兼容,就会出现这个问题。 我当时使用的是 macOS Sur。许多旧版本的 gems 都无法与其兼容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接