不完全ながらメモ。
雛形を作る
$ 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