ruby-on-rails - “Bundler 找不到 gem 的兼容版本”,即使版本不冲突
问题描述
Bundle install
抱怨它找不到gem“actionmailer”的兼容版本,即使它在错误中显示的依赖约束不冲突。
它给了我这个让我bundle install
很难过的输出
In Gemfile:
premailer-rails was resolved to 1.10.3, which depends on
actionmailer (>= 3)
rails (> 3.0, < 3.2.22.1) was resolved to 3.2.22, which depends on
actionmailer (= 3.2.22)
依赖项似乎根本不冲突。
我尝试将 rails 显式设置为“3”,而不是 3.2.22.1,这似乎消除了错误。但是 3.xxx 不等于 >3 吗?
在我的 Gemfile 中:
gem 'rails', '<3.2.22.1', '>3.0'
gem 'premailer-rails'
... #other gems
输出显示它将 rails 解析为 3.2.22,actionmailer >=3 是 premailer-rails 的依赖项,而 actionmailer = 3.2.22 是 rails 的依赖项。
满足所有约束。3.2.22 >=3,依赖应该解决。我错过了什么?
解决方案
你之前在这个目录中安装过更新的 Rails 吗?在这种情况下,bundler 会记住它的依赖actionmailer
版本,现在这个更新版本actionmailer
会阻止安装旧版本。因为install
action 实际上是保守更新,只分析 lastGemfile.lock
和 current之间的变化Gemfile
。
无论如何,删除Gemfile.lock
并bundle install
再次运行。
推荐阅读
- java - 如何在java中使用“0”停止do while循环
- laravel - laravel 5-通过多对多搜索获取相关产品
- c++ - 整数到文本显示不正确
- javascript - 如何连接 Laravel 5.4 后端和 Angular 5 前端
- c++ - 不了解构造函数如何工作的问题
- elasticsearch - 弹性搜索中的查询与过滤
- mysql - 具有多项选择的 MySQL 测验和用户选择未回答的问题
- php - PHP 7.2.7 警告:为 foreach() 提供的参数无效
- typescript - Vue + TypeScript 覆盖`导出默认 Vue`
- oracle - 使用 Oracle 12.1 对某些用户进行区分大小写的登录