ruby-on-rails - 即使不在 Gemfile 中,“捆绑安装”也会继续安装 gem sqlite3 版本 1.4.2
问题描述
我需要为我的应用安装 sqlite3 v1.3.9 gem,所以我将这一行添加到 Gemfile:
gem 'sqlite3', '= 1.3.9'
但是,当我运行“捆绑安装”时,它会安装该 gem 的 v1.4.2。
我将上面的行修改为
gem 'sqlite3', '= 1.3.9', '< 1.4'
不高兴——安装了 sqlite v1.4.2(即使我从 Gemfile 中完全删除了对“sqlite3”的任何引用)。
我的 Gemfile 是在我使用时创建的rails new appname
,所以它一点也不花哨……我只是添加gem devise
了它。
Gemfile.lock 不包含对 sqlite3 的任何引用。无论如何我删除了它,它没有帮助。
作为另一种选择,我通过安装 v1.3.9gem install sqlite3 -v 1.3.9
并删除了 v1.4.2
# bundle exec gem uninstal sqlite3
Select gem to uninstall:
1. sqlite3-1.3.9
2. sqlite3-1.4.2
3. All versions
> 2
Successfully uninstalled sqlite3-1.4.2
...但是当我尝试添加 v1.3.9 时,我得到了:
# bundle add sqlite3 -v 1.3.9
[!] There was an error parsing `injected gems`: You cannot specify the same gem twice with different version requirements.
You specified: sqlite3 (~> 1.4) and sqlite3 (= 1.3.9). Bundler cannot continue.
# from injected gems:1
# -------------------------------------------
> gem "sqlite3", "= 1.3.9"
# -------------------------------------------
我很感激有关为什么继续安装 v1.4.2 的任何提示,最重要的是,如何让捆绑程序忘记 v1.4.2 并接受 v1.3.9?
非常感谢!
解决方案
您的应用程序中可能有一些 gem 需要sqlite3-1.4.2
,这会导致安装sqlite3-1.3.9
. 您应该检查您的 Gemfile.lock 并查找任何sqlite3-1.4.2
作为依赖项添加的 gem。
推荐阅读
- java - Spring boot/quartz webapp 不发布“actuator/quartz”端点
- python - 为什么 Matplotlib 用不正确的 Y 绘制值?
- php - 如何在 laravel 8 中自定义默认分页?
- python - Python Selenium 按类名将文件上传到网站
- php - 删除 .php 会使 .inc 出现问题
- python - 如何从我的 .png 图像中删除灰色背景
- c# - 如何手动触发 JsonSerialization 错误
- html - 如何传输 html 代码(带标签)将“数据标题”扔到 css 内容:attr(数据标题)?或者其他方式
- xcode - 如何在没有 Xcode 的情况下生成 Apple Development 身份?
- sql-server - 我需要在不使用循环的情况下通过迭代找到多行