0
0

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 3 years have passed since last update.

Rubyでgemパッケージアプリを作成する

Posted at

gemアプリを作ろう

ruby でアプリケーションを作成して配布するとき、rb ファイルをzipで固めて配布するよりも gem化して配布した方がなんだかカッコイイ。rubygems に登録しないにしてもgem化しておけば、導入と破棄がとても簡単になる。gemパッケージを作る方法はいくつかあるが、ここではとてもシンプルな方法で作成してみている。

gemspec を作成する

hoge アプリを作ってみる。最初に用意するのは 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 ファイルを編集して開発を進める。
次のような内容に修正してみよう。

hoge.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ファイルを知人に配布するなり、ご自由にどうぞ。

あっ。知り合いに渡すときには、使い方を説明するのは忘れないでくださいね

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?