手动降级Rails至5.1.0后执行bundle exec rails c报错求助
解决Rails项目版本不匹配导致的控制台启动报错问题
我来帮你搞定这个问题,你遇到的核心矛盾是手动修改Gemfile版本后,项目里的配套文件(比如bin目录下的执行脚本)还是基于最初的5.2.0版本,和5.1.0不兼容,所以启动控制台才会出现一堆报错。下面给你两种解决方案,优先推荐第一种更彻底的方式:
方案一:直接用指定版本的Rails创建项目
这是最稳妥的方式,从根源避免版本不兼容问题:
- 先确认本地安装了Rails 5.1.0,如果没装,执行:
gem install rails -v 5.1.0 - 用指定版本的Rails命令创建项目,注意版本号前后的下划线:
这样生成的项目,Gemfile默认就是rails _5.1.0_ new projectgem 'rails', '5.1.0',而且所有自动生成的文件(bin脚本、配置文件等)都是对应5.1.0版本的,不会出现后续报错。
方案二:修复已创建的项目
如果你已经创建了项目不想重来,可以按下面步骤修复:
- 确保Gemfile里已经改成了
gem 'rails', '5.1.0',然后执行安装依赖:bundle install - 关键步骤:用当前Gemfile指定的Rails版本更新项目的bin目录脚本(这些脚本原本是5.2.0版本的,和5.1.0不兼容):
bundle exec rails app:update:bin - 现在再启动控制台就正常了:
bundle exec rails c
为什么手动改Gemfile会报错?因为rails new命令不只是写Gemfile,还会生成bin目录下的rails、rake等可执行脚本,这些脚本里的代码是和创建时的Rails版本(5.2.0)绑定的,当你降级到5.1.0后,这些旧脚本和新的Rails依赖不匹配,就会触发报错。更新bin脚本就能解决这个兼容性问题。
内容的提问来源于stack exchange,提问作者ttinggggg
相关产品推荐
相关产品推荐

