2

我最近启动了一个私有 gem(我可以保证没有其他人在使用它)来包装一个小众数据库的 JDBC 驱动程序。我最终只是发布了一个我想要重做的 gem 版本。

我了解如何提取gem 版本,以及只是增加版本号并发布它的常见解决方案,这在大多数情况下是有意义的。但是,就我而言,这并不是那么简单,因为我想使用与我捆绑的数据库驱动程序相同的 gem 版本(这似乎是一种常见的做法),因此不能选择增加版本号。我也不能做一些聪明的事情,比如.1在数据库版本号中添加后缀,因为数据库版本中有字母字符,这使得~>操作员无法使用(所有版本都被视为预发行版)。简而言之,我需要那个确切的版本号。

我的问题是,如果我提取gem 的所有版本,以便 gem 名称在 RubyGems 名称池中再次可用,我可以重新声明 gem 名称并针对我之前使用的相同 gem 版本推送不同的代码吗?

4

3 回答 3

4

防止 Gem 修改是 RubyGems.org 设计的一部分。用户计算机上的 RubyGems 会缓存原始 gem 文件,因此如果您运行gem install两次 - 如果原始 gem 在 RubyGems.org 上被修改,行为可能会不一致,但旧版本会保留在缓存中。因此,您唯一能做的就是yank或联系 RubyGems.org 团队为您破例。

当我们完成包装器时,就像您建议的那样,我们添加了另一个.1后缀来区分包装特定版本库的不同构建。

于 2013-02-07T20:29:28.733 回答
1

无法更换宝石,抱歉。您必须提交新版本。

于 2012-06-07T01:47:44.383 回答
0

我的问题是,如果我拉出所有版本的 gem,以便 gem 名称在 RubyGems 名称池中再次可用

我的回答似乎离题了,但在这种情况下(拉出所有版本的 gem),从 RubyGems 中完全删除旧的 gem 并将所有版本发布到名称相同或略有不同的新 gem 会更容易

于 2019-05-10T06:21:01.043 回答