ハイパーニートプログラマーへの道

頑張ったり頑張らなかったり

【Ruby on Rails】dyld: lazy symbol binding failed: Symbol not found: というエラーが出たので

bin/rake spec を走らせた時に以下のようなエラーが出るようになりました

$ ./bin/rake spec

dyld: lazy symbol binding failed: Symbol not found: __ZN2v82V821AddGCPrologueCallbackEPFvNS_6GCTypeENS_15GCCallbackFlagsEES1_
  Referenced from: /Users/noriyo_tcp/workspace/some-project/vendor/bundle/ruby/2.2.0/extensions/x86_64-darwin-17/2.2.0-static/therubyracer-0.12.1/v8/init.bundle
  Expected in: flat namespace

dyld: Symbol not found: __ZN2v82V821AddGCPrologueCallbackEPFvNS_6GCTypeENS_15GCCallbackFlagsEES1_
  Referenced from: /Users/noriyo_tcp/workspace/some-project/vendor/bundle/ruby/2.2.0/extensions/x86_64-darwin-17/2.2.0-static/therubyracer-0.12.1/v8/init.bundle
  Expected in: flat namespace

therubyracer, libv8, v8 の再インストール

github.com

この記事では therubyracer, libv8, v8 の再インストールを行なっているが、今回の場合

.bundle/config で以下のような設定にしているので、実際にはlibv8 のアンインストールと再インストールはしませんでした

# v8@3.15 をbrew でインストールしてあり、オプションでそちらを見に行くように設定
BUNDLE_BUILD__LIBV8: "--with-system-v8"
BUNDLE_BUILD__THERUBYRACER: "--with-v8-dir=/usr/local/opt/v8@3.15"
$ bundle exec gem uninstall therubyracer
$ brew reinstall v8@3.15
$ bundle

ちなみに therubyracer のアンインストール時に undefined method `delete' for #<Bundler::SpecSet:0x007f8613c354b0>

って出るけど大丈夫っぽい http://smellman.hatenablog.com/entry/20121025/1351162613


しかしこれでもダメだった・・・。その他MacOSrootless を切ってみるなどしたが、うまく行きませんでしたorz

結局therubyracer をアップデート(0.12.1 -> 0.12.3)

$ bundle update therubyracer