由于 formtastic gem 版本冲突,无法使用 surveyor gem 以及已经在使用的 Active Admin gem

Unable to use surveyor gem along with already in use Active Admin gem because of formtastic gem version conflict

很奇怪,我第一次遇到这样的问题: 从表面上看,我有冲突,fromtastic for surveyor 和 activeadmin 正在尝试使用相同的不同版本 gem,你如何处理此类问题?

Bundler could not find compatible versions for gem "formtastic":
  In Gemfile:
    formtastic (~> 2.1.0) ruby

    activeadmin (>= 0) ruby depends on
      formtastic (2.3.0)

我仔细研究了一下: 并在 SO 上找到了这个 link:

我以为只要更改gemfile.lock中的版本就可以解决这个问题,但没有,我现在得到的错误是: Bundler 找不到 gem "actionpack" 的兼容版本: 在宝石文件中: activeadmin (>= 0) ruby 取决于 formtastic (~> 2.1.0) ruby 取决于 动作包 (~> 3.0) ruby

rails (= 4.1.0) ruby depends on
  actionpack (4.1.0)

更改后的 gemfile.lock 看起来像: 眼镜: activeadmin (1.0.0.pre) 树枝 (~> 1.0, >= 1.0.2) 波旁酒 咖啡-rails 格式化 (~> 2.1.0) 进行此更改后我必须 运行 的命令是:

Resolving dependencies...
You have requested:
  formtastic ~> 2.1.0

The bundle currently has formtastic locked at 2.3.1.
Try running `bundle update formtastic`

此错误意味着您尝试一起使用的版本 surveyor 和 activeadmin 不能一起使用 — 它们的库要求不兼容。 (Surveyor 想要 [2.1.0, 2.2.0) 范围内的 formtastic;activeadmin 将仅适用于 [2.3.0, 2.3.0]。)

修改Gemfile.lock(不推荐)无法解决这个问题,因为依赖版本是由各个库的 gemspecs 定义的。当加载每个库时,rubygems 将使用其指定的版本约束加载其依赖项(这是您在 "You have requested..." 错误中看到的)。

要尝试的事情:

  • 查找相互兼容的不同版本的测量员和 activeadmin。如果您在 Gemfile 中放宽对一个或另一个的版本约束,Bundler 将尝试执行此操作。但是可能没有这样的版本也与您应用中的其他 gem 兼容(包括 Rails)。

  • fork surveyor 或 activeadmin 并更改 formtastic 依赖版本。这可能会破坏某些东西 — 他们可能出于某种原因有特定的版本要求 — 但值得一试。

试试这个..(调查员和活动管理员兼容版本)

  1. rm Gemfile.lock
  2. 添加 gem gem 'activeadmin', github: 'gregbell/active_admin'
  3. 添加gem"surveyor"
  4. 捆绑安装