You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ruby代码中获取当前应用可用Gem的本地版本?

如何在Ruby代码中检查当前应用bundle内的Gem版本

查询单个Gem的版本

如果你想获取当前bundle中某个特定Gem的版本,直接用Bundler提供的API就可以,它会严格对应你的Gemfile.lock里的版本,不会取系统中其他安装的版本:

# 替换成你要查询的Gem名称
gem_name = 'rails'

begin
  # 从bundle加载的specs中查找指定Gem
  gem_spec = Bundler.load.specs.find_by_name(gem_name)
  puts "#{gem_name} 的版本是: #{gem_spec.version}"
rescue Bundler::GemNotFound
  puts "#{gem_name} 不在当前应用的bundle中"
end

这个方法的好处是只针对当前应用的bundle环境,完全符合你要的“当前应用可用”的要求,不会受到系统全局Gem的干扰。

列出bundle中所有已安装的Gem

如果需要先获取所有bundle内的Gem列表再自行过滤,用下面的代码可以遍历输出所有Gem的名称和版本:

# 遍历bundle中所有Gem的spec信息
Bundler.load.specs.each do |spec|
  puts "#{spec.name}: #{spec.version}"
end

运行这段代码后,你会得到和bundle list命令输出类似的结果,但这是在Ruby代码里直接获取的,方便你后续做过滤、存储等操作。

注意事项

  • 确保你的代码运行在Bundler管理的环境中:比如在Rails控制台里执行,或者在脚本开头添加require 'bundler'和Bundler.setup来初始化bundle环境。
  • Bundler.load.specs返回的是Gem::Specification对象的数组,每个对象包含Gem的名称、版本、依赖等完整信息,你可以根据需求提取更多字段。

内容的提问来源于stack exchange,提问作者iconoclast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:27:48