为何gem info可找到matrix gem,bundle info却无法识别?
问题原因及解决办法
核心区别
gem info和bundle info是两个完全不同的命令:
gem info查询的是系统全局范围内安装的所有gem,不管你当前在哪个项目里,只要gem装在系统的gem仓库里(比如你的/usr/lib/ruby/gems/3.1.0),它就能找到。bundle info是针对当前Ruby项目的依赖管理工具,它只认项目根目录下Gemfile(或Gemfile.lock)里明确声明的gem,和全局安装的gem无关。
为什么bundle找不到matrix?
因为你当前的Redmine项目的Gemfile里没有添加matrix这个gem的依赖声明,所以bundle不会去识别全局安装的版本——bundle的核心作用就是隔离项目依赖,确保每个项目用的gem版本都是可控的,不受全局环境干扰。
解决步骤
如果你的项目确实需要用到matrix:
- 打开项目根目录下的
Gemfile,添加一行:gem 'matrix' - 在终端执行
bundle install,让bundle把这个gem加入项目的依赖管理,并安装到项目专属的gem目录(如果之前没装的话)。 - 之后再执行
bundle info matrix,就能正常查到信息了。
如果只是想确认bundle能不能找到全局的matrix,可以用:
bundle show --global matrix
内容的提问来源于stack exchange,提问作者Steffen
相关产品推荐
相关产品推荐

