不完全ながらメモ。
雛形を作る
$ bundler gem hello
こうするとhelloディレクトリが作られて、その中にひな形のファイル(hello.gemspecとかlibとかが作られる)。
hello.gemspecを変更する
TODOと書かれているgem.description、gem.summaryは変更しないとrake buildする際にエラーが出るので必ず書き換える。
Gem::Specification.new do |gem|
gem.name = "hello"
gem.version = Hello::VERSION
gem.authors = ["Masato Ikeda"]
gem.email = ["masato.ikeda@gmail.com"]
gem.description = %q{テキトーに書く}
gem.summary = %q{テキトーに書く}
gem.homepage = "https://github.com/a2ikm/hello_gem"
gem.files = `git ls-files`.split($/)
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
gem.require_paths = ["lib"]
end
gem.homepageはgem-browseで使われるので、特に理由がなければGitHubのリポジトリにしておくと便利。
あと、デフォルトだとgitのリポジトリに追加されているものだけがgemのパッケージに含まれるようになっている。これを任意のものにしたければ、gem.filesの部分を書き換えて個別に列挙する。
雛形を作った時点でgitリポジトリの初期化も行われているので、この時点でコミットしておくといいかも。一般的に不要なファイルはデフォルトで生成される.gitignoreで除外されている。
$ git add . $ git commit -am "initial commit"
実行ファイルを追加する
binディレクトリを作ってそこに追加すればOK。
$ mkdir bin $ echo '#!/usr/bin/env ruby' >> bin/gem_name $ echo 'puts "Hello world!"' >> bin/gem_name $ git add bin $ git commit -m "add executables"
実装する
ひたすら実装。
gemファイルを作る
rakeタスクのbuildでpkgディレクトリ以下にバージョン番号付きのgemファイルが作られる。バージョン番号はlib/hello/version.rbで定義されているものが使われる。pkg以下の既存のgemファイルと名前が衝突した場合には上書きされる。
$ rake build
インストール
最新のバージョンがインストールされる(たぶん)。
$ rake install
リリース
最新のバージョンがrubyegms.orgで公開される(たぶん)。
$ rake release