22

名前を変更したい宝石があります。RubyGemsで公開されています。私は主にそれを更新したい人々について心配しています。

私には2つの道がありますが、宝石の名前を変更した人々から、どのようにこれを行ったかを本当に聞きたいと思います。

1.古いものをメタパッケージに変える

  • 新しいgem(名前付きsmart-cropper)を作成します
  • (古い宝石)smart-cropperへの依存関係として追加croptoelie
  • すべてのライブラリ、ビン、その他のコードをから削除しますcroptoelie

これで私が目にする問題は、透明度が高すぎることです。人々は、使用している宝石がもはや維持されていないことに気付かない可能性があります。

smart-cropperもう1つの問題は、バージョン管理が難しくなることです。名前が変更された( )gemの新しいバージョンをリリースするたびに、古い「メタパッケージ」のバージョンをバンプする必要があります。そうしないと、人々は新しいバージョンを取得できません。

2.非推奨の警告をスローします

古いgemのリリースを送信して、廃止の警告をスローし、新しいgemをインストールする必要があるというメッセージを表示することができます。

これに関して私が目にする問題は、それが非常に煩わしく、人々[1]を宝石から完全に遠ざける可能性があるということです。

他に選択肢はありますか?名前の変更に対応するために「RubyGems」に組み込まれているものはありますか?

[1]あまり多くの人がそれを使用しているわけではありません。名前のせいで見つけるのは難しいです。:)

4

1 に答える 1

29

新しい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."

古い宝石の.gemspecファイル

post_install_message属性を使用して、古いgemがインストールされた後にメッセージを表示します。次の例は、 Herokugemに基づいています。

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

古いGitHubリポジトリのページ

-1-ページの上部:このリポジトリに説明を追加します:(新しい名前を入力します)

Moved to ---> "_____".

-2-ページの上部:このリポジトリにWebサイトを追加します:(これを新しいリポジトリのURLにします)

https://github.com/_____/_____

-3-新しいものをアップロードしREADME.markdownます:

# OLD NAME

Moved to [new name](https://github.com/_____/_____).

-4-必須ではないファイルをすべて削除することを検討してください。

新しい宝石の.gemspecファイルで

summaryordescription属性の最後に次の通知を含めます。

Formerly known as '_____'.

古い宝石をヤンクする

ある遠い時点で、RubyGemsから古いgemを削除したい場合があります。RubyGems1.3.6とgemcutter 0.5.0(2010年2月頃)の時点で、geminstallやその他のgemコマンドでgemを使用できないようにするためにgem yank使用できます。ただし、次の2つの主な理由により、gemは引き続きダウンロードできます。

  1. あなたの宝石に応じて、他の宝石がプッシュされた可能性があります。
  2. 重要なコミュニティベースの宝石の大量削除は簡単に防ぐことができます。

ヤンクの詳細については、こちらをご覧ください。

于 2013-01-04T01:21:09.323 に答える