修改bundler版本后执行bundle install出现大量gem版本冲突如何解决
修复步骤
你遇到的问题核心有两个:一是mimemagic 0.3.0因许可证问题已从RubyGems官方源下架,被paperclip 4.3.x版本强制依赖导致无法找到;二是多个未锁版本的gem拉取了过高版本,和Rails 4.2.11.1的依赖约束冲突,按照以下步骤修复即可:
- 首先确认你本地使用的bundler版本为1.17.3,Rails 4.2不兼容2.x版本的bundler,如果版本不符先执行:
gem install bundler:1.17.3 - 修改你的Gemfile,调整以下条目:
- 删除Gemfile最后一行的
gem 'bundler', '1.17.3',bundler版本不需要声明在项目依赖中 - 处理mimemagic缺失问题,二选一即可:
- 方案A(推荐):升级paperclip到兼容版本,将原有paperclip声明改为
gem 'paperclip', '~> 5.2.0',该版本放宽了mimemagic的版本约束,可直接使用官方源中可用的mimemagic版本 - 方案B(不升级paperclip):新增一行声明
gem 'mimemagic', github: 'mimemagicrb/mimemagic', tag: 'v0.3.0',直接从GitHub拉取已下架的0.3.0版本
- 方案A(推荐):升级paperclip到兼容版本,将原有paperclip声明改为
- 锁recaptcha版本适配sdoc的json 1.x依赖,将原有recaptcha声明改为
gem "recaptcha", '~> 4.14.0', require: "recaptcha/rails" - 新增一行主动锁i18n版本适配Rails 4.2的约束:
gem 'i18n', '~> 0.7.0' - 锁activeadmin版本避免拉取不兼容的高版本,将原有activeadmin声明改为
gem 'activeadmin', '~> 1.4.3' - 锁omniauth-google-oauth2版本适配Rails 4.2的rack约束,将原有声明改为
gem 'omniauth-google-oauth2', '~> 0.8.0'
- 删除Gemfile最后一行的
- 删除旧的依赖锁定文件:
rm Gemfile.lock - 使用指定版本的bundler执行依赖安装:
bundle _1.17.3_ install
如果仍有少量剩余冲突,只需要给对应未锁版本的gem添加适配Rails 4.2的版本约束即可。
内容的提问来源于stack exchange,提问作者nourza
相关产品推荐
相关产品推荐

