1

当我使用 rspec-mode 从 emacs 运行某些 rspec 请求规范时,我收到以下错误:

dyld:惰性符号绑定失败:找不到符号:_system_free 引用自:/Users//.rvm/gems/ree-1.8.7-2011.03@/gems/nokogiri-1.5.2/lib/nokogiri/nokogiri.bundle 预期在: 平面命名空间

当我从命令行运行相同的规范时,它运行得很好。想知道是否有人知道在通过 emacs 运行 rspec 请求规范时为什么会出现错误消息的原因?

4

1 回答 1

1

按照 rspec-mode 项目主页上的建议,我可以通过强制 emacs 使用 bash shell 而不是 zsh 来解决这个问题。我在这里复制该信息:

如果您使用 ZSH 和 RVM,您可能会遇到运行规范的问题。可能是因为使用了比您在 .rvmrc 中指定的旧版本的 Ruby。这是因为 ZSH 每次创建 shell 时都会运行一个小脚本,该脚本会修改 $PATH。问题是它预先添加了一些默认路径,例如 /usr/bin,其中包含另一个 ruby​​ 二进制文件。

你可以做些什么来解决这个问题是使用 BASH 来运行规范。这段代码完成了这项工作:

(defadvice rspec-compile (around rspec-compile-around)
  "Use BASH shell for running the specs because of ZSH issues."
  (let ((shell-file-name "/bin/bash"))
    ad-do-it))
(ad-activate 'rspec-compile)
于 2012-04-24T20:02:44.470 回答