Ruby で gem パッケージを作成するには、 NewGem や Jeweler を使用する方法もあるようですが、今回は Bundler を使用する方法について記録してみました。
0. 前提条件
- OS は Linux Mint 14 Nadia(64bit) を想定
- Ruby 1.9.3-p385 を使用。
- Git がインストール済みである。
- 試験的に作成する gem パッケージ名は
test_gem
とする。 - 今回は、テストについては考えない。(gem パッケージを作成することが今回の目的なので)
1. gem パッケージ Bundler インストール
gem パッケージ Bundler が未インストールならインストールする。(大抵はインストール済みのはず)
1
|
|
2. gem プロジェクト作成
次のようにして、適当なディレクトリで gem パッケージのプロジェクト(要は gem パッケージの雛形)を作成する。
1 2 3 4 5 6 7 8 9 10 |
|
3. gemspec 編集
使用するマシンに Git がインストール済みなら、 authors
, email
には Git に設定している値が格納されているはず。
また、 TODO
という文字列があるとビルドできないので、適切な文言に変更する。(summary
にはタイトルを、 description
には説明を)
homepage
に公開する場合の URL を設定する。
作成する gem 自体に依存するパッケージがある場合は add_runtime_devendency
で、gem の開発に必要なパッケージがある場合は、 add_development_dependency
で設定する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
4. 実装
「gem は require
時に lib/test_gem.rb
を読み込む」という事を理解した上で、実際にコーディング作業を行う。
場合によりサブディレクトリを利用し lib/test_gem.rb
から require
するようにしたりする。
以下は当方の例で、文字列を出力するだけのもの(別ファイルを require
する形にしている)。
1 2 3 4 5 6 |
|
1 2 3 4 5 6 |
|
5. バージョン管理
gem のバージョン管理は test_gem/lib/test_gem/version.rb
で行う。
特に、公開する際には数字を上げてから公開するようにする。
1 2 3 |
|
6. コミット
パッケージ化する前に Git コミットをしておく。
これは、 gemspec
内の git ls-files
によりパッケージ化するファイル(コミット済みのファイル)の一覧を取得するため。
(ファイルを複数に分割していないのであれば、コミットしてなくても大丈夫(多分))
1 2 3 |
|
7. パッケージ化
ビルドして gem パッケージ化する。
test_gem-0.0.1.gem
というファイルが作成されるはずである。
1 2 |
|
もしくは、以下のようにしてもよい。
1
|
|
8. インストール
作成した gem パッケージをインストールする。
1 2 3 4 5 |
|
gem build
でビルドしている場合は、上記の pkg/
の部分は不要。
(ちなみに、 rake install
でインストールしようとすると 「gem install
でインストールせよ」という旨のエラーになる。)
そして、インストールできているか確認する。
1 2 |
|
9. 動作確認
実際に作成された gem パッケージを require
して使用してみる。
require
ができて、正常に機能することを確認する。
1 2 3 4 5 6 7 |
|
10. 参考サイト
- Bundler: The best way to manage Ruby applications
- Specification Reference - RubyGems Guides
- guides/gem-development.md at master · radar/guides · GitHub
これで、 Bundler による gem 作成が可能になりました。
当初、 Git は GitHub に公開する際にだけ使用するものだと思っていましたが、実際はビルド前にコミットしておく必要があるということに気付くまで少々時間がかかってしまいました。
また、当方は自前のサーバに Git サーバを構築しているので、普段は Git サーバで開発作業(Git 管理)し、公開できるようになった時点で GitHub にアップするようにします。
以上。