Rails宝石安装问题

时间:2014-11-12 19:47:21

标签: ruby-on-rails ruby gem rubygems bundler

如果我在我的gem文件中编写以下内容,则无法使用Bundle安装

gem 'activerecord-sqlserver-adapter'

我遇到了以下错误

Bundler could not find compatible versions for gem "activerecord":
In Gemfile:
activerecord-sqlserver-adapter (~> 4.0.0) ruby depends on
  activerecord (~> 4.0.0) ruby

rails (= 4.1.2) ruby depends on
  activerecord (4.1.2)

但是当我从终端安装这个gem时,如

gem install activerecord-sqlserver-adapter

我收到了以下成功信息

Fetching: activerecord-sqlserver-adapter-4.1.0.gem (100%)
Successfully installed activerecord-sqlserver-adapter-4.1.0
1 gem installed

2 个答案:

答案 0 :(得分:1)

与通过捆绑器安装gem并直接安装gem有所不同。使用Bundler时,Bundler将解析Gemfile中包含的任何其他gem的上下文中的gem依赖项。因此,如果宝石A和B都依赖于C,但它们依赖于两个不同的版本,Bundler会抱怨。

在您的情况下,activerecord-sqlserver-adapter取决于activerecord(〜> 4.0.0),这意味着任何版本4.0.x,而您使用的Rails 4.1.2取决于{{1} } 4.1.2。

activerecordactiverecord-sqlserver-adapter具有相同的依赖关系,但版本不匹配。您需要降级Rails(不推荐),或升级rails依赖项。您可能需要联系activerecord-sqlserver-adapter的维护者,或者分叉库。

答案 1 :(得分:1)

你说你放了这个:

gem 'activerecord-sqlserver-adapter'

但捆绑声明说明了这一点:

In Gemfile:
activerecord-sqlserver-adapter (~> 4.0.0) ruby depends on
...

你真的把它放在你的Gemfile中吗?

gem 'activerecord-sqlserver-adapter', '~> 4.0.0'

因为最新的activerecord-sqlserver-adapter支持AR 4.1.x.您可以尝试bundle up activerecord-sqlserver-adapter,获取最新信息,或在Gemfile中指定'~> 4.1'