Rails运行generate命令提示已安装的bundler缺失是什么原因
问题原因
- 报错的核心是Rails启动时调用的Spring预加载器,没有在读取的GEM_PATH路径中找到项目Gemfile.lock锁定的bundler 2.2.31版本。你直接在shell执行
bundler --version能正常返回,是因为当前shell的环境变量匹配到了gem安装路径,但Spring进程加载时的环境变量没有同步。 - 你当前使用的是macOS自带的系统Ruby 2.6版本,系统Ruby的gem安装路径默认存在权限隔离,也容易出现路径匹配不一致的问题。
解决方法
- 先停止当前运行的Spring进程,清除缓存
spring stop
- 同步项目锁定的bundler版本和本地安装的版本
bundle update --bundler
- 修正rails generate命令的格式(
description:和text之间不要加空格),重新执行即可
rails generate scaffold todo_list title:string description:text
后续优化建议
- 不要直接使用macOS自带的系统Ruby做Rails开发,推荐通过rbenv、rvm等版本管理工具安装独立的用户级Ruby环境,可避免系统权限限制导致的各类gem路径匹配问题。
- 每次切换Ruby版本或者拉取新的项目代码后,先执行
bundle install同步依赖。
内容的提问来源于stack exchange,提问作者RanH
相关产品推荐
相关产品推荐

