创建Ruby on Rails项目时始终安装非指定版本gem该如何解决?
问题原因说明
- 版本概念混淆
你执行gem -v输出的2.7.6是RubyGems包管理器本身的版本,不是bundler gem的版本,查询bundler版本需要执行bundle -v。 - 版本管理工具冲突
你的环境变量PATH中同时存在rbenv和rvm两类Ruby版本管理工具的路径,二者会互相干扰,导致gem安装路径、调用优先级异常,这是你安装指定版本gem不生效的核心原因。
解决步骤
- 第一步:清理版本管理工具冲突
如果你确定使用rbenv作为Ruby版本管理工具,编辑你的shell配置文件(通常是~/.bashrc/~/.zshrc/~/.bash_profile),删除所有和rvm相关的配置行,保存后执行source 配置文件路径生效,避免二者路径冲突。 - 第二步:安装指定版本bundler并生效
执行以下命令:
其中gem install bundler:1.11.2 rbenv rehashrbenv rehash是刷新rbenv的可执行文件映射缓存,是rbenv环境下安装新gem后必须执行的操作。完成后执行bundle -v,确认输出为1.11.2即可。 - 第三步:创建Rails项目
先清空当前目录下之前创建项目生成的残留文件(Gemfile、Gemfile.lock、.bundle文件夹等),再执行以下命令:
调用bundler时指定版本号即可避免调用到高版本bundler。rails _4.2.6_ new . --no-ri --no-rdoc bundle _1.11.2_ install
额外兼容性提示
Rails 4.2.x系列对Ruby 2.5.x的适配并不完善,如果后续仍出现依赖异常,可以将rbenv使用的Ruby版本切换到2.3.x或2.4.x,适配稳定性更高。
内容的提问来源于stack exchange,提问作者iviviviviv
相关产品推荐
相关产品推荐

