【发布时间】:2016-12-12 08:30:44
【问题描述】:
在我的工作和家用计算机上,我最近使用ruby-install 将 Ruby 升级到了 2.3.1。我使用chruby 作为我的 Ruby 切换器。
我开始在终端中看到此警告:
Ignoring bcrypt-3.1.11 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.11
Ignoring bcrypt-3.1.10 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.10
Ignoring binding_of_caller-0.7.2 because its extensions are not built. Try: gem pristine binding_of_caller --version 0.7.2
Ignoring byebug-9.0.5 because its extensions are not built. Try: gem pristine byebug --version 9.0.5
Ignoring byebug-5.0.0 because its extensions are not built. Try: gem pristine byebug --version 5.0.0
Ignoring concurrent-ruby-ext-1.0.2 because its extensions are not built. Try: gem pristine concurrent-ruby-ext --version 1.0.2
Ignoring debug_inspector-0.0.2 because its extensions are not built. Try: gem pristine debug_inspector --version 0.0.2
在我的工作计算机上,列表要长得多,但很容易解决。当我尝试建议的gem pristine GEM 时,它告诉我找不到gem,所以我运行gem install GEM,并且解决了它。
在家里,什么都做不了。
我尝试过的事情,来自常识和其他各种堆栈问题:
gem pristine GEMgem pristine --all- 卸载并重新安装 gem
gem updategem update --systembundle update- 卸载并重新安装
bundler - 卸载并重新安装
rails(虽然这不是 Rails 特定的问题。) - 正在删除
~/.bundle/ - 打开
XCode并让它安装一些扩展(它确实需要这样做,但它没有解决任何问题。) - 运行
brew doctor并解决所有小问题,然后运行brew update和brew upgrade -
gem install curb(我无法想象这个 gem 与这个问题有什么关系,但是两个不同的人将它列为他们修复同一警告的最后一步。)
【问题讨论】:
-
如果未安装 gem,我什至会看到相同的警告。我卸载了
bcrypt,但它仍然给了我两个警告。 -
你更新了 bundler 吗?卸载和重新安装只会使用 Gemfile.lock 中的任何内容。 Bundler 是构建扩展的人。此外,您的输出列出了多个版本的 gem,因此您应该知道该版本的 ruby 是系统范围的(这意味着您将要重建多个 gem)。
-
我在我的主文件夹中,不是 Rails 项目,所以没有 Gemfile。
-
我也遇到了同样的问题(使用 rvm)。
gem pristine --all没用。通过删除包括捆绑器在内的所有宝石来解决。然后安装了 bundlergem install bundler,最后导航回我的项目并运行bundle install,它重新安装了我所有的 gem,一切正常 -
就我而言,它是由 vim 扩展引起的。我做了 alias vim="rvm use system do vim" 来解决它。但我只在退出 vim 时看到了警告,所以如果你在其他情况下看到它,这可能不适用。