読者です 読者をやめる 読者になる 読者になる

野良Gem のバージョンアップ

以前 Bundler と GitHub を使った野良Gem のバージョンアップについてまとめたのですが(参照)、もう少しちゃんとしたやり方がわかったのでメモしておきます。野良Gem 'Utils' を例にします。(バージョンアップではなく、野良Gem作成はここがわかりやすいです。)


まず、utils/lib/utils.rb(Gem本体)と utils/lib/utils/version.rb(バージョン情報)を書き換えます。これはいいですね。
そして、ディレクトリ utils の中で

$ gem build utils.gemspec
$ gem install utils

を実行します。これで一応 Gem が出来ているので、irbrequire 'utils' から、Gem が正しく動作するか確認します。


次は、変更されているファイルを add します。(よくわからなかったら、add する前に $ git status で確認するとよいです。)

$ git add lib/utils.rb
$ git add lib/utils/version.rb
($ git add -u でもOK)

コミットを記録します。"**" の中身は適当に書いて下さい。

$ git commit -m "revised1"

git のリポジトリを push します。ローカル・リポジトリからリモート・リポジトリへアップロードされます。

$ git push -u origin master

リリースします。

$ rake release

エラーのように表示されますが、これでいい筈です。アップロードされているか GitHub で確認して下さい。

あとは野良Gem のインストールです。上のディレクトリに戻って、

$ bundle exec gem uninstall utils

で一旦古い Gem をアンインストールします。そして Gemfile の該当の Gem の部分をコメントアウトし、$ bundle list。もう一度(面倒ですが)コメントアウトしを元に戻して

$ bundle install

これでお終いです(後注:たんに $ bundle update utils でOK)。お疲れ様でした。


※追記

Couldn't git push. `git push  2>&1' failed with the following output:

To git@github.com:obelisk68/utils.git
 ! [rejected]        master -> master (fetch first)

などと出る時は、

$ git pull
$ git push -u origin master
$ rake release

を試してみて下さい。

また、

rake aborted!
WARNING:  See http://guides.rubygems.org/specification-reference/ for help
ERROR:  While executing gem ... (Gem::InvalidSpecificationException)
    utils-1.6.4 contains itself (utils-1.6.4.gem), check your files list

などと出るときは、

$ git rm utils-1.6.4.gem

などと重複を消して下さい。


参考:
git pushがrejectされたときの解決の手順 - 今日もスミマセン。
今さら聞けない!GitHubの使い方【超初心者向け】 | TechAcademyマガジン
Git リポジトリに上がっているファイルを履歴ごと消すには? - Qiita