执行rails s因mime-types报错,Ruby与Rails版本适配咨询
问题解答
Ruby 2.6.3 与 Rails 5.0.7.2 的兼容性
Ruby 2.6.3 和 Rails 5.0.7.2 是兼容的。Rails 5.0 官方支持的 Ruby 版本范围是 2.2.2 至 2.6.x,你的版本组合不存在底层兼容问题,错误是依赖包版本冲突或缺失导致的。
两类错误的解决方案
1. mime-types-2.99.3 的 SyntaxError
Ruby 2.6 开始将 _1、_2、_3 这类变量名设为保留编号参数,而旧版 mime-types-2.99.3 的代码中使用了这些变量,直接触发语法冲突。
解决步骤:
- 修改项目根目录的
Gemfile,指定兼容 Ruby 2.6 的 mime-types 版本:gem 'mime-types', '~> 3.2' - 执行
bundle update mime-types完成版本更新 - 重新运行
rails s验证
2. carrierwave-video 的 LoadError
无法加载该文件通常有以下几种原因及对应解决方式:
- gem 未安装或版本不兼容:检查
Gemfile中是否包含carrierwave-video,若没有则添加适配 Rails 5.0 的版本(比如gem 'carrierwave-video', '~> 0.6.0'),再执行bundle install - 系统依赖缺失:carrierwave-video 依赖
ffmpeg工具,需确保系统已安装该工具(Ubuntu 用sudo apt install ffmpeg,macOS 用brew install ffmpeg) - 配置问题:若已安装 gem 和 ffmpeg,检查项目中 carrierwave 的配置文件是否正确引入了 carrierwave-video 的模块
内容的提问来源于stack exchange,提问作者kira
相关产品推荐
相关产品推荐

