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

已安装对应版本bundler但执行rails生成迁移命令时RubyGems报错找不到

问题描述

我执行rails generate migration命令时收到如下报错:

/Users/bob/.rbenv/versions/2.7.4/lib/ruby/2.7.0/rubygems.rb:277:in 'find_spec_for_exe': Could not find 'bundler' (2.2.21) required by your /Users/bob/path/to/my/project/Gemfile.lock. (Gem::GemNotFoundException)

随后提示的操作指引为:

To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.2.21`

已确认对应版本的bundler已经安装,验证命令及输出如下:

$ gem list bundler

*** LOCAL GEMS ***

bundler (2.2.21)

$ ruby -v
ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-darwin19]

$ find ~/.rbenv -name "*bundler*" | grep 2.7.4 | grep gemspec

/Users/bob/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/specifications/bundler-2.2.21.gemspec
/Users/bob/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bundler-2.2.21/bundler.gemspec

排查发现问题出在rubygems.rb第267行代码:

specs = dep.matching_specs(true)

该行返回空数组,说明RubyGems无法找到匹配的spec文件。已尝试执行提示中的bundle update --bundler和gem install bundler:2.2.21命令,均无法解决问题。

解决方案
  • 执行rbenv重哈希命令,更新rbenv的可执行文件映射关系:
rbenv rehash
  • 检查项目根目录下的.ruby-version文件内容是否为2.7.4,避免rbenv切换到其他Ruby版本执行命令。
  • 验证bundler的调用路径是否正确,执行以下命令查看:
which bundle
rbenv which bundle

如果which bundle输出不是/Users/bob/.rbenv/shims/bundle,或rbenv which bundle输出不是对应2.7.4版本下的bundler路径,说明rbenv的命令映射异常,可删除现有shim文件后重新生成:

rm ~/.rbenv/shims/bundle
rbenv rehash
  • 在项目目录下使用bundle exec前缀执行rails命令,强制调用项目配置的bundler版本:
bundle exec rails generate migration
  • 检查Gemfile.lock末尾的BUNDLED WITH字段,确认指定的版本为2.2.21,如无其他依赖冲突可删除该字段后重新执行bundle install生成锁定文件。
  • 升级RubyGems到最新版本,解决旧版本RubyGems的匹配逻辑问题:
gem update --system
  • 检查环境变量中是否存在GEM_HOME、GEM_PATH的异常配置,配置错误会导致RubyGems无法正确读取已安装的gem包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:06:03