gemアプリを作ろう
ruby でアプリケーションを作成して配布するとき、rb ファイルをzipで固めて配布するよりも gem化して配布した方がなんだかカッコイイ。rubygems に登録しないにしてもgem化しておけば、導入と破棄がとても簡単になる。gemパッケージを作る方法はいくつかあるが、ここではとてもシンプルな方法で作成してみている。
gemspec を作成する
hoge アプリを作ってみる。最初に用意するのは gemspec ファイルだ。
require 'rubygems'
spec = Gem::Specification.new do |spec|
spec.name = "hoge"
spec.version = '0.1.0'
spec.summary = "ruby package test."
spec.description = %{ ruby package test examples.}
spec.author = 'Iwao Watanabe'
spec.email = 'iwao@users.sf.net'
spec.homepage = 'http://sourceforge.net/users/iwao/'
spec.files = Dir["lib/hoge.rb", "lib/hoge/*.rb"]
spec.files.reject! { |fn| fn.include? "~" or fn.include? "CVS"}
spec.required_ruby_version = '>= 1.9.0'
puts spec.files
end
ここで重要なのは name と version と files だ。
name がパッケージ名で versionが世代を意味する。
filesで指定するファイルが用意すべきファイルだ。
取り急ぎはコマンドラインからサクッと作成する。
$ mkdir -p lib/hoge
$ echo 'puts "aa!"' >> lib/hoge/aa.rb
$ echo 'puts "hello!"' >> lib/hoge.rb
gemファイルを作成する
gemファイルを作成する。build コマンドでこのgemspecs を実行するだけだ。
$ gem build hoge.gemspec
hoge-0.1.0.gem が生成されたら成功だ。
開発向けにgemをローカルインストール
作成したら早速インストールしよう。ただし開発のためにシステムには組み込まない。
作業ディレクトリ直下の vendor ディレクトリに組み込もう。
$ gem install hoge-0.1.0.gem -i vendor
gem installed と表示されたら導入されている。
hogeパッケージが組み込まれていて動作するか確認してみよう。
$ GEM_HOME=vendor ruby -rhoge -e ''
hello!
$
環境変数 $GEM_HOME に gem のインストール先の vendor を指定して、
-r オプションでパッケージロードを指定している。 -e '' で空文字を渡して実行している。
hoge.rb が読み込まれて hello! が出力された。
ちなみに hoge/aa.rb を動かすには -r で次のように呼び出す
$ GEM_HOME=vendor ruby -rhoge/aa -e ''
aa!
$
gem導入先のvendor以下のファイルを編集
動作しているファイルをls で確認してみよう。
$ ls -R vendor/gems/hoge-0.1.0/lib
hoge hoge.rb
vendor/gems/hoge-0.1.0/lib/hoge:
aa.rb
$
このhoge.rb や hoge/aa.rb ファイルを編集して開発を進める。
次のような内容に修正してみよう。
def args(args=nil)
args = ARGV unless args
args.each_with_index do |arg, i|
puts "#{i}: #{arg}"
end
end
args を定義してみた。これを動かすには -e オプションで指定すればよい
$ GEM_HOME=vendor ruby -rhoge -e args aa bb cc
0: aa
1: bb
2: cc
$
コマンドラインから渡されたパラメータが表示できている!
動作確認が終わったら..
vendor/gems 以下での振る舞いが満足のいく状況になったら、手元に戻してgemを再作成して確認しよう
$ cp -pr vendor/gems/hoge-0.1.0/lib/ lib/
$ gem build hoge.gemspec
$ gem install hoge-0.1.0.gem -i vendor2
$ GEM_HOME=vendor2 ruby -rhoge -e args aa bb cc
0: aa
1: bb
2: cc
2回目のインストールはさりげなく vendor2 に変えてます。
あとはgitにコミットするなり、gemファイルを知人に配布するなり、ご自由にどうぞ。
あっ。知り合いに渡すときには、使い方を説明するのは忘れないでくださいね