Windows10下用Cmder启动Rails服务器遇参数错误及版本告警
解决Rails 5.0.0 + Ruby 2.5在Windows Cmder中启动Server的错误与警告
你遇到的问题本质是Ruby版本与Rails版本不兼容导致的,咱们一步步拆解解决:
问题原因
- Fixnum/Bignum废弃警告:Ruby 2.5开始把
Fixnum和Bignum合并成了统一的Integer类,但你的Rails 5.0.0版本的activesupport库还在引用这两个已被废弃的常量,所以启动时会弹出警告。 - Rack应用参数错误:这个
ArgumentError是版本不兼容的连锁反应——Ruby 2.5对部分方法的参数签名做了调整,而Rails 5.0.0的代码还沿用旧的调用方式,导致参数数量不匹配。
解决方案
方案一:降级Ruby到兼容版本
Rails 5.0.x官方推荐的Ruby版本是2.2.2~2.4.x,把Ruby降到2.4系列就能完美匹配:
- 卸载当前的Ruby 2.5.x,安装Ruby 2.4.10(2.4系列的稳定终版)
- 打开Cmder进入项目目录,运行
bundle install重新安装所有依赖 - 再次执行
rails server,警告和错误都会消失,应用就能正常在http://localhost:3000启动了
方案二:升级Rails到兼容Ruby 2.5的补丁版
如果你不想换Ruby版本,可以升级Rails到5.0系列的最新稳定补丁版,它已经修复了Ruby 2.5的兼容性问题:
- 打开项目根目录的
Gemfile,找到这一行:
修改为:gem 'rails', '5.0.0'gem 'rails', '~> 5.0.7.2' - 在Cmder里运行
bundle update rails,等待依赖更新完成 - 执行
rails server,此时废弃警告和参数错误都会被解决
如果想长期维护项目,也可以考虑升级到Rails 5.1或5.2版本(这些版本对Ruby 2.5支持更完善),但升级可能需要处理一些其他依赖的兼容问题,根据你的需求选择就好。
内容的提问来源于stack exchange,提问作者mikesun108




