概要
前回 独自の 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 のリポジトリがないと怒られます
- git init
- git add
- git commit -m “First commit”
- git remote add origin https://github.com/hawksnowlog/fstlib.git
- git push -u origin master
でコードを 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 から消えます
返信削除gem 3.4.6 で久しぶりに push してみたところ bundle exec gem push package-0.0.1.gem という感じでパッケージ名が必須になっていました
というわけではなく bundle exec rake build してその後 gem push すればいいだけでした。bundle exec gem release はビルドも兼ねているようです
削除