如何解决已安装的Ruby Gem无法被定位的问题——以fastlane snapshot update找不到aws-partitions-1.445.0为例
解决bundle exec找不到已安装gem的问题
我之前也碰到过这种明明gem已经本地安装,但bundle exec就是定位不到的糟心情况,针对你遇到的aws-partitions-1.445.0找不到的问题,试试下面这几个实用方法:
方法1:核对bundle的Ruby环境与gem路径是否匹配
有时候bundle使用的Ruby版本或gemset和你安装aws-partitions的环境不一致,导致路径不匹配。
- 先运行
bundle env,查看输出里的Ruby Version和BUNDLE_PATH - 对比
bundle info aws-partitions显示的路径/Library/Ruby/Gems/2.6.0/gems/aws-partitions-1.445.0,确认bundle用的Ruby版本是不是2.6.0,BUNDLE_PATH是不是指向这个目录。 - 如果不一致,比如你用了rbenv/rvm,先切换到对应的Ruby版本:
rbenv local 2.6.0(rbenv)或rvm use 2.6.0(rvm),再重新执行命令。
方法2:强制bundle使用已安装gem的路径
直接指定bundle安装路径为gem所在目录,让它关联到已有的aws-partitions:
bundle install --path /Library/Ruby/Gems/2.6.0
执行完后再尝试bundle exec fastlane snapshot update。
方法3:清理bundle缓存并重新生成依赖
bundle的缓存可能出现异常,导致无法识别已安装的gem:
- 清理缓存:
bundle clean --force
- 重新安装依赖:
bundle install
方法4:检查并更新Gemfile.lock中的版本
打开项目根目录的Gemfile.lock,搜索aws-partitions,看看记录的版本是不是1.445.0:
- 如果版本不对,运行
bundle update aws-partitions来更新到指定版本; - 如果Gemfile里有版本限制,确认限制范围包含1.445.0,比如
gem 'aws-partitions', '~> 1.445'。
方法5:临时指定bundle的gem路径(快速验证)
如果想立刻验证问题是否解决,可以在执行命令时强制指定gem路径:
BUNDLE_GEM_PATH=/Library/Ruby/Gems/2.6.0 bundle exec fastlane snapshot update
内容的提问来源于stack exchange,提问作者Ramis
相关产品推荐
相关产品推荐

