脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

rubyのgemファイルの作成・公開方法

自分の作ったアプリやライブラリなどをgem化してrubygems.orgへ公開する方法です。

gemファイルの作成

Create gem
$ cd ${your APP}
$ rake -T
$ rake build
$ ls -l 
    total 320
    -rw-rw-r-- 1 root root  16159 Aug 19 11:50 CHANGELOG
    -rw-rw-r-- 1 root root     39 Aug 18 12:33 Gemfile
    -rw-rw-r-- 1 root root    771 Aug 19 11:50 Gemfile.lock
    drwxrwxr-x 3 root root   4096 Jun 29 10:36 lib
    -rw-rw-r-- 1 root root  35147 Jun 29 10:36 LICENSE
    drwxrwxr-x 2 root root   4096 Aug 19 11:54 pkg        <=== 作成される
    -rw-rw-r-- 1 root root    493 Jun 29 10:36 Rakefile
    -rw-rw-r-- 1 root root   2339 Jun 29 10:36 README.md
    drwxrwxr-x 3 root root   4096 Aug 18 12:34 test
  • 以前の「rake package」は使えなくなったようです。使うと以下のようなエラーが出ます。
$ rake package
    rake aborted!
    Don't know how to build task 'package'
    /usr/local/rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval'
    /usr/local/rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>'
    (See full trace by running task with --trace)
Confirm gem
$ cd pkg/
$ ls -l
    -rw-rw-r-- 1 root root 124928 Aug 19 11:54 ${yourAPP}-${version}.gem

$ gem install --local ./${yourAPP}-${version}.gem
    Successfully installed ${yourAPP}-${version}
    1 gem installed
    Installing ri documentation for ${yourAPP}-${version}...
    Installing RDoc documentation for ${yourAPP}-${version}..

$ gem list | grep ${yourAPP}
*** LOCAL GEMS ***
${yourAPP} (${version})

rubygems.orgへアップロード

まず最初に、rubygemsのアカウントがない場合は以下から作成しましょう

Sign up | RubyGems.org | your community gem host

次に実際にアップデートします
$ gem push ./${yourAPP}-${version}.gem
    Enter your RubyGems.org credentials.
    Don't have an account yet? Create one at http://rubygems.org/sign_up
       Email:   > ### 登録したアドレスを入力しましょう
    Password:   > ### 登録したパスワードを入力しましょう
    Pushing gem to https://rubygems.org...
    Signed in.
    Pushing gem to https://rubygems.org...
    Successfully registered gem: ${yourAPP} (${version})
Web上で確認

rubygemsの再度で実際にアップデートされていることが確認できたら完了です。
https://rubygems.org/gems/{yourAPP}