2017年6月21日水曜日

作成した gem ファイルを rubygems.org で公開する手順

概要

前回 独自の gem ファイルを作成する方法を紹介しました
今回は作成した gem ファイルを rubygems.org で公開する手順を紹介します

環境

  • CentOS 7.3.1611
  • ruby 2.3.3p222
  • gem 2.6.11
  • rake 10.4.2

サインアップ

https://rubygems.org/sign_up からアカウントを作成しましょう
メールアドレスがあれば簡単に作成できます

登録したメールアドレスに確認用の URL が送信されるのでクリックしてアカウントを承認します
問題なくログインできるか確認してください

gem の作成

とりあえず今回は何でも OK です
本記事では 前回 の記事を参考に gem を作成しています

とりあえずリリースしてみる

まず Github にソースをアップロードします
Github じゃなくても良いですが remote のリポジトリがないと怒られます

でコードを push しましょう
そして

  • bundle exec gem push

で rubygems.org に認証します
登録したメールアドレスとパスワードで認証しましょう
cat ~/.gem/credentials ができれば OK です
そして

  • bundle exec rake release

で gem ファイルアップロードできます

fstlib 0.1.0 built to pkg/fstlib-0.1.0.gem.
Tag v0.1.0 has already been created.
Pushed fstlib 0.1.0 to rubygems.org.

こんな感じになれば成功です
rubygems の自分のアカウントのページにアクセスするとアップロードした gem があると思います

バージョンアップしてみる

適当にコードを改修してバージョンアップしてみましょう

  • vim lib/fstlib.rb
require "fstlib/version"

module Fstlib
  def self.hello
    "My second rubygems"
  end
end
  • vim lib/fstlib/version.rb
module Fstlib
  VERSION = "0.1.1"
end

でコードを改修したら

  • git add .
  • git commit -m “Second commit”
  • git push -u origin master

でコミットして

  • bundle exec rake release

で再度アップロードします
アップロード完了後再度 gem のページを見てみるとバージョンが 0.1.1 に上がっていることが確認できると思います

使ってみる

新しいスクリプトを作成してアップロードした gem が使えるか確認してみましょう

  • bundle init
  • vim Gemfile
gem "fstlib"
  • bundle install

で rubygems.org からアップロードした gem がインストールできます

  • vim test.rb
require 'fstlib'

p Fstlib.hello
  • bundle exec ruby test.rb

実行すると "My second rubygems" が表示されると思います

最後に

作成した gem を rubygems.org で公開する手順を紹介しました
今回紹介した rake release の流れは「ビルド -> コミットがあるかチェック -> リモートに push -> rubygems.org にプッシュ」という流れをやってくれています
https://github.com/bundler/bundler/blob/master/lib/bundler/gem_helper.rb#L55

なので bundle exec gem push を実施しないでいきなり release しても初回であれば rubygems.org に対する認証を聞かれると思います
うまくログインができない場合は個別で gem push を実行すると良いと思います

また削除する場合はコマンドで行います

  • gem install gemcutter
  • gem yank fstlib -v 0.1.1
  • gem yank fstlib -v 0.1.0

という感じで全バージョン削除すると rubygems.org から消えます

参考サイト

2 件のコメント:


  1. gem 3.4.6 で久しぶりに push してみたところ bundle exec gem push package-0.0.1.gem という感じでパッケージ名が必須になっていました

    返信削除
    返信
    1. というわけではなく bundle exec rake build してその後 gem push すればいいだけでした。bundle exec gem release はビルドも兼ねているようです

      削除