ruby - 如何获取已安装的具有 native 扩展的 gem 列表?

标签 ruby rubygems gem

我在 Windows 上,已经从 ruby​​ 1.8.x 更新到 1.9.x,现在收到错误弹出窗口,提示缺少 ruby​​-mssomethingrt.1.8.x.dll。

我想找出哪些 gem 具有 native 扩展,以便我可以卸载它们并在安装期间再次在本地强制重建 native 扩展,以使错误消失。

最佳答案

基于 this answer ,这里是一个解决方案,它可以找到并提供重新安装具有 native 扩展的 gems 适用于最近的 ruby (>=1.9)

native_gems = []
Gem::Specification.each do |spec|
  native_gems << "#{spec.name}:#{spec.version}" unless spec.extensions.empty?
end

install_cmd = "gem install #{native_gems.join ' '}"
puts "Found #{native_gems.length} gem(s) with native extensions:"
puts "\n> " + install_cmd, "\nReinstall gems with above command? (yn)"

exec insall_cmd if gets.downcase[0] == 'y'

示例输出:

Found 36 gem(s) with native extensions:

> gem install atomic:1.1.13 bcrypt-ruby:3.0.1 bigdecimal:1.2.0 eventmachine:1.0.3 eventmachine:1.0.0 eventmachine:0.12.10 ffi:1.9.3 ffi:1.9.0 ffi:1.7.0 hiredis:0.4.5 hpricot:0.8.6 io-console:0.4.2 json:1.8.1 json:1.8.0 json:1.7.6 nokogiri:1.6.0 nokogiri:1.5.9 pg:0.17.1 pg:0.17.0 pg:0.16.0 pg:0.15.1 pg:0.13.2 psych:2.0.0 puma:2.7.1 puma:2.6.0 puma:2.4.0 puma:1.6.3 sqlite3:1.3.8 sqlite3:1.3.7 sqlite3:1.3.5 therubyracer:0.12.0 thin:1.5.1 thin:1.5.0 thin:1.4.1 websocket-driver:0.2.3 websocket-driver:0.1.0

Reinstall gems with above command? (yn)
…

关于ruby - 如何获取已安装的具有 native 扩展的 gem 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5165950/

相关文章:

mysql - 无法在 macOS Sierra 上安装 mysql2 gem

ruby gem 安装

rubygems - RubyMine - 找不到 "directory_watcher"gem

ruby - bundler vs RVM vs gems vs RubyGems vs gemsets vs system ruby

asp.net - 如果我学习 Ruby,会有什么改变? (我知道 ASP.NET)

Ruby 标签列表到流畅的正则表达式

ruby - 如何输出 ruby​​ 单元测试的名称

ruby-on-rails - 错误 : Error installing capybara-webkit:

ruby-on-rails - Rails gem "friendly_id": How to get a live preview of the slug, 在它的对象被创建之前

ruby - 安装 Vagrant 的开发版本,但 bundler 似乎没有从源代码安装 vagrant gem