如何重命名宝石?

ber*_*kes 20 gem rubygems

我有一个我要重命名的宝石.它发布在RubyGems上.我最担心的是人们想要更新它.

我看到两条路,但是真的想听听那些重命名他们的宝石的人,他们是怎么做到的.

1.将旧的变成元数据包

  • 创建一个新的gem(命名smart-cropper)
  • 添加smart-croppercroptoelie(旧宝石)的依赖
  • 从中删除所有lib,bin和其他代码 croptoelie

我看到的一个问题是,它太透明了,人们可能不会意识到他们使用的宝石不再被维护.

另一个问题是版本控制变得更难:每次我发布一个新版本的renamed(smart-cropper)gem时,我都必须碰到旧版"metapackage"的版本,否则人们永远不会得到新版本.

2.抛弃弃用警告

我可以发送一个旧宝石的版本,只是抛出弃用警告,并发出一条消息,人们应该安装新的宝石.

我看到的问题是它可能非常具有侵入性,可能会让人们[1]完全脱离宝石.

还有其他选择吗?"RubyGems"中是否有内容可以满足更改名称的需要?

[1]并不是说有太多人在使用它; 因为这个名字很难找到.:)

use*_*833 27

您只需使用新名称推送新gem并告诉用户新名称.没有重命名宝石的机制.- RubyGems支持人员,2012年2月20日

为此,以下是一些提示(其中一些我认为你已经完成了).

在旧宝石中,抛弃弃用警告

例:

warn "[DEPRECATION] This gem has been renamed to _____ and will no longer be supported. Please switch to _____ as soon as possible."
Run Code Online (Sandbox Code Playgroud)

在旧宝石的.gemspec文件中

使用post_install_message属性在安装旧gem后显示消息.以下示例基于Heroku gem.

gem.post_install_message = <<-MESSAGE
!    The '_____' gem has been deprecated and has been replaced by '_____'.
!    See: https://rubygems.org/gems/_____
!    And: https://github.com/_____/_____
MESSAGE
Run Code Online (Sandbox Code Playgroud)

在旧的GitHub回购页面上

-1-在页面顶部:向此存储库添加描述:(提供新名称)

Moved to ---> "_____".
Run Code Online (Sandbox Code Playgroud)

-2-在页面顶部:将网站添加到此存储库:(使其成为新存储库的URL)

https://github.com/_____/_____
Run Code Online (Sandbox Code Playgroud)

-3-上传新的README.markdown:

# OLD NAME

Moved to [new name](https://github.com/_____/_____).
Run Code Online (Sandbox Code Playgroud)

-4-考虑删除所有非必要文件.

在新宝石的.gemspec文件中

summaryor description属性的末尾包含以下通知:

Formerly known as '_____'.
Run Code Online (Sandbox Code Playgroud)

猛拉旧宝石

在某些遥远的地方,您可能想要从RubyGems中删除旧的gem.从RubyGems 1.3.6和gemcutter 0.5.0(大约2010年2月)开始,您可以使用gem install和其他gem命令gem yank删除gem.但是,宝石仍可供下载,主要有两个原因:

  1. 其他宝石可能已被推出,取决于你的宝石.
  2. 可以轻松地大规模删除重要的基于社区的宝石.

有关yank的更多信息,请访问此处.