7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gemを公開するまでのメモ

Last updated at Posted at 2015-02-21

初めてgemを公開したので備忘録として.

gemを作る

bundle gem <なまえ> -t

<なまえ> に "-"(ハイフン)が入ってるとネストした構成で生成される.
プラグインなど既存のgemの拡張などは、"-"(ハイフン)で区切った名前にするとよい.
例) capistrano に対する capistrano-ext

単純に単語を区切る目的なら、"_"(アンダースコア) を使用するとよい.

次に <なまえ>.gemspec の以下を修正

  • spec.name gemの名前. <なまえ> にあわせておけばOK
  • spec.summary 超簡単な説明
  • spec.description 簡単な説明
  • spec.homepage 特に作ってない場合はGithubのページを指定とけばOK
  • spec.add_development_dependency 開発で使うgems.必要な分だけ並べる
  • spec.add_dependency このgemを利用する際に依存しているgem. 必要な分だけ並べる.

spec.add_development_dependencyspec.add_dependencyGemfileから移動する.
代わりに、Gemfileはこんなかんじになる.

source 'https://rubygems.org'
gemspec

肝心のコードは、lib/<なまえ>.rb に書く.
ちなみにいくつかgemを覗いてみたところ、lib以下にはロードパスが通るので、lib/<なまえ>.rb には lib/<なまえ>/*.rbrequire するだけになっているgemも多かった.

試しにローカルにインストールしてみる

$ rake build
$ rake install
$ irb -r<なまえ> 

で、エラーがでなければ多分大丈夫.

参考: http://masarakki.github.io/blog/2014/02/15/how-to-create-gem/

gemを公開する

Githubの場合

ユーザ登録なりリポジトリ作ったりは省略.
公開はpushするだけでOK.ただし公開したgemsを利用する場合、Gemfileにはリポジトリのパスを書かなければならない.

gem '<なまえ>', github: "<Githubのユーザ名>/<なまえ>"

Rubygemsの場合

認証

pushするマシンで、認証情報を最初に1回だけ取得する.

$ curl -u <RubyGemsのユーザ名> https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials

Enter host password for user '<RubyGemsのユーザ名>':

で、RubyGemsのパスワードを入力する.

公開する

以下のコマンドで、現在のバージョンでタグ打ってRubygemsにpushしてくれる.

$ rake release

こっちで公開しておけば、gem install <なまえ> や、 Gemfilegem <なまえ> と書くだけで利用できる.

参考: http://guides.rubygems.org/make-your-own-gem/

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?