【问题标题】:How to specify version of a local gem in Gemfile?如何在 Gemfile 中指定本地 gem 的版本?
【发布时间】:2015-02-11 07:27:13
【问题描述】:

我有一个本地 gem 和一个使用本地 gem 的 rails 应用程序。

有没有办法指定 gem 的特定版本?

我知道“rake install”会在 gem 的 /pkg 目录中生成 *.gem。但是我不知道怎么用。

这是我现在的使用方法:

In Gemfile:
gem 'mygem', path: '~/shared/mygem'

谢谢。

山姆

编辑:

我认为我的问题几乎与How to tell the Gem File to use a specific local copy of a gem 重复。

我只需要知道如何指定本地 gem 的特定版本。

【问题讨论】:

标签: ruby-on-rails ruby gem


【解决方案1】:
In Gemfile:
gem 'mygem', path: '~/shared/mygem', branch: 'branch name'

如果您的版本在特定的提交中,则使用 ref: 'commit number'

【讨论】:

    【解决方案2】:

    要指定版本,或者更具体地说,一系列版本,您可以像在 ruby​​ 代码中一样使用运算符。

    运营商应该是:

    >=<=~>

    范围允许它可能无法匹配确切的版本号(对于特定于 Windows 的 gem 构建尤其如此)。

    悲观运算符 (~>) 通常被认为是最佳选择,因为它与您正在使用的构建保持在相同的点范围内(1.0.4 永远不会达到 1.1.0,但可以使用介于两者之间的任何值) .

    gemfile 语法示例:

    gem 'sinatra', '~> 1.4.4'
    

    gem 'uglifier', '>= 1.3.0'
    

    【讨论】:

    • 但是对于本地 gem,bundler 可以找到最新版本,但不能找到过去的版本。当我将版本指定为 '0.0.3' 时,捆绑器说“在 ../shared/mygem 的源代码中找不到 gem 'mygem (= 0.0.3) ruby​​'。源包含 'mygem' 在:0.0.4 "。
    • 如果我理解正确,它应该找不到 0.0.3,因为你安装了 0.0.4。你有 0.0.3 吗?如果是这样,也许您需要执行以下操作:gem 'mygem', '= 0.0.3', :path => 'path/to/gemfolder/' - 指定 0.0.3 所在的文件夹。看起来 rails 需要一个目录而不是文件路径。
    猜你喜欢
    • 2011-05-28
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多