【问题标题】:Rails gemfile version constraint issueRails gemfile 版本约束问题
【发布时间】:2015-10-23 10:25:54
【问题描述】:

我在本地机器上安装了两个版本的 devise gem,即 devise(3.5.1) 和 devise(3.5.2)。

在我的 gemfile 中,我包含了带有悲观版本约束的 devise gem,如下所示。

gem 'devise' , '~> 3.4'

devise gem 的依赖项:

devise-encryptable-0.2.0 (devise (>= 2.1.0))
devise_invitable-1.4.0 (devise (>= 3.2.0))
devise_invitable-1.3.6 (devise (>= 3.2.0))
devise_security_extension-0.8.4 (devise (>= 2.0.0))
devise_security_extension-0.8.3 (devise (>= 2.0.0))
devise_security_extension-0.8.1 (devise (>= 2.0.0))
devise_security_extension-0.8.0 (devise (>= 2.0.0))

根据我的研究,此运算符(~>)的含义是它将寻找设计版本 >= 3.4 但 "Could not find devise-3.4.1 in any of the sources"。

我的问题是,如果我的机器上安装了 devise gem 版本 >= 3.4(在我的情况下为 devise 版本 3.5.2),为什么bundle show 命令会出错。

【问题讨论】:

  • 其他 gem 依赖于 3.4.x 吗?
  • @japed - 不,不依赖于 3.4.x .. 请参阅更新后的问题。

标签: ruby-on-rails gemfile


【解决方案1】:

您的 Gemfile 已锁定在此版本上,这就是为什么您的 bundle install 命令不会寻找不同的版本尝试运行 bundle update devise 然后 Rails 将尝试寻找更新版本的 devise gem 并更新您的依赖项。

了解运营商~>

当您将新 gem 添加到您的 Gemfile bundler 时,必须考虑到您有依赖关系,然后操作员 ~> 开始行动,它将尝试为您的 Gemfile 中列出的所有 gem 找到可完成的版本,并将没有被锁定到特定版本,它将被锁定到低于第一个数字的版本范围。

了解bundle install

bundle install 命令查找 Gemfile.lock 中列出的 gem,并且无论 Gemfile 中的哪个运算符都不会更新或更改任何 gem 版本。

【讨论】:

  • 你是对的......实际上我的 gem 被锁定在 3.4.1 版本上,这就是我收到错误的原因。运行 bundle update devise gem 版本后从 3.4 更改为 3.5.2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多