まくまくRubyノート
Gem パッケージを作成する (3) パッケージを公開する
2017-08-07

Gem パッケージの準備

ここでは、作成した Gem パッケージを RubyGems.org へ公開する手順を示します。 Gem パッケージの作成方法に関しては、下記の記事を参考にしてください。

RubyGems.org にアカウントを作成する

作成した Gem パッケージを RubyGems.org にアップロードするには、下記のサインアップページからアカウントを作成しておく必要があります。

メールアドレスとアカウント名、パスワードを入力したら、確認メールが届きますので、そこに記載されたアドレスにアクセスして Verify すれば完了です。

Gem パッケージをアップロードする

RubyGems.org にアカウントを作成したら、gem push コマンドを使って Gem パッケージを公開することができます。

$ gem push hello-1.0.0.gem
Enter your RubyGems.org credentials.
Don't have an account yet? Create one at https://rubygems.org/sign_up
   Email: yourname@example.com
Password: ********
Signed in.
Pushing gem to RubyGems.org...
Successfully registered gem: hello (1.0.0)

初めて gem push コマンドを実行するときは、上記のように、RubyGems.org のアカウント名とパスワードを入力する必要があります。

数分後、RubyGems.org 上で、登録した Gem パッケージを参照できるようになります。

$ gem list -r -d hello

*** REMOTE GEMS ***

gradleww (1.0.0)
    Author: maku77
    Homepage: https://github.com/maku77/hello

    Hello Gem!

(コラム)アクセス用の鍵ファイルを取得&設定する

gem push による Gem パッケージのアップロード時には、アクセス用の鍵ファイルとして ~/.gem/credentials というファイルが参照されます。 ここには RubyGems.org の Web API を使用するための API キーが保存されており、このファイルがあれば gem push 実行時に、アカウント名とパスワードを入力する必要がなくなります。 このファイルは、最初に gem push の実行に成功したときに自動的に作成されるので、特に意識して作成する必要はありません(最初の実行時だけアカウント名とパスワードの入力を求められます)。

もし必要があれば、下記のように RubyGems.org のサイトから手動で取得することができます。

Linux / Mac OSX の場合

Linux ベースのシステムでは、下記のように curl コマンドで取得することができます(このコマンドは RubyGems.org のプロファイル設定ページ で確認できます)。

$ curl -u UserName https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials

Enter host password for user 'UserName': *******

Windows の場合

鍵ファイル (api_key.yaml) は、Web ブラウザでダウンロードすることもできます。 下記のサイトにブラウザからアクセスし、登録したユーザ名とパスワードを入力してください。

ダウンロードしたら、ファイル名を credentials に変更し、ホームディレクトリの .gem ディレクトリ内に保存してください。 Windows 環境で、Ruby がホームディレクトリとして認識しているディレクトリは、下記のようにすれば分かります(通常は %HOME%%USERPROFILE% 環境変数で参照できるディレクトリが表示されるはずです)。

C:\> gem environment gempath
C:/Users/maku/.gem/ruby/2.4.0;C:/app/Ruby/lib/ruby/gems/2.4.0

上記の場合は、C:\>Users/maku/.gem/confidentials として保存すればよいことになります。

2017-08-07