RubyGemsとGitHubに公開したgemの名前を変更する手順
前提
GitHubのリポジトリ名を変更する
oldnameのリポジトリ → Settings → Repository name にnewname
と入力してRename
oldname gem使用者向けに警告を表示する
oldname
というブランチをmasterから作り、そこで作業する。
$ git checkout master $ git checkout -b oldname
以下のコードをoldname gemのどこかに書く(colorizeライブラリなどで文字色を変更して目立たせると気づかれやすい)。
warn "[DEPRECATION] This gem has been renamed to `newname` and will no longer be supported. Please switch to `newname` as soon as possible."
次に、以下のコードをoldname.gemspec
に追加する。するとoldname gemのアップデート時にこのメッセージが出る。
spec.post_install_message = <<-MESSAGE ! The 'oldname' gem has been deprecated and has been replaced by 'newname'. ! See: https://rubygems.org/gems/newname ! And: https://github.com/YourID/newname MESSAGE
最後にtinyバージョンを1つ上げる。
lib/oldname/version.rb
module OldName VERSION = "0.1.1" # 0.0.1上げる end
newname gemの設定
newname
というブランチをmasterから作り、そこで作業する。
$ git checkout master $ git checkout -b newname
まずはコード中のoldname
やOldName
をすべてnewname
やNewName
に置換する。ファイルやディレクトリ名のoldname
もnewname
に置換する。その時は、mv
コマンドではなくgit mv
コマンドを使う。
$ git mv oldname.gemspec newname.gemspec $ git mv lib/oldname/ lib/newname/ (省略)
newname.gemspec
のdescription
かsummary
に以下の文を追加する(任意)。
Formerly known as 'oldname'.
gemのリリース
まずはoldnameをRubyGemsにリリースする。masterでないブランチでreleaseするので、set-upstream(-u
)する必要がある。
$ git checkout oldname $ git push -u origin oldname $ bundle exec rake release
次にnewnameをRubyGemsにリリースする。
$ git checkout newname $ git push -u origin newname $ bundle exec rake release
masterブランチの変更
masterブランチをnewnameブランチと同じにする。
$ git checkout newname $ git branch -d master $ git branch master
最後にGitHubにmasterをpushして完了。
$ git checkout master $ git push -u origin master -f