【问题标题】:How to specify a certain dependent version dependency for capistrano gem如何为 capistrano gem 指定某个依赖版本依赖项
【发布时间】:2014-02-24 08:25:22
【问题描述】:

http://rubygems.org/gems/capistrano/versions/2.15.5

我想在上面的 capistrano 版本中使用 net-ssh 版本 2.7.0 而不是 2.8.0。如何在我的 Gemfile 中指定这个

我在 Gemfile 中添加了以下内容,生成的 Gemfile.lock 如下所示。即便如此,我在共享包文件夹中也看到了 net-ssh 2.7.0 和 2.8.0。

gem 'net-ssh', '2.7.0'

capistrano (2.15.5)
  highline
  net-scp (>= 1.0.0)
  net-sftp (>= 2.0.0)
  net-ssh (>= 2.0.14)
  net-ssh-gateway (>= 1.1.0)
net-scp (1.1.2)
  net-ssh (>= 2.6.5)
net-sftp (2.1.2)
  net-ssh (>= 2.6.5)
net-ssh (2.7.0)
net-ssh-gateway (1.2.0)
  net-ssh (>= 2.6.5)

net-ssh (= 2.7.0)

【问题讨论】:

  • 在您的 Gemfile 或 Gemfile.lock 中没有对 2.8.0 的引用。仅仅因为它是以前安装的,并不意味着你的包正在使用它。

标签: ruby-on-rails capistrano gemfile


【解决方案1】:

使用捆绑器,您可以使用三种不同的方法指定 gem 的版本

gem 'net-ssh', '2.7.0'    # Exactly version 2.7.0 
gem 'net-ssh', '>=2.7.0'  # Any version greater than or equal to 2.7.0 
gem 'net-ssh', '~>2.7.0'  # Any version within the same major release so 2.7.x

捆绑器文档可在此处获取 http://bundler.io/

【讨论】:

  • bundler 1.6 即将发布,您不妨链接到最新文档:P
  • @sevenseacat 我应该这样做。链接到谷歌向我展示的第一个。现已编辑
  • 我在我的问题中添加了一些注释,这似乎不起作用。 capistrano gem 依赖于 net-ssh,我想将该特定版本绑定到 2.7.0,它似乎在捆绑安装时同时拉动 2.7.0 和 2.8.0,或者即使我删除 gem 并重试。
  • 它没有拉 2.8.0,也没有使用它。
  • 为什么你认为它使用的是2.8.0?您的 Gemfile.lock 中是否提到了 2.8.0?
【解决方案2】:

与指定任何其他 gem 的方式相同 - gem 'net-ssh', '2.7.0'

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 2017-09-20
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多