以前のエントリでnewgem を使ったgem の作り方をまとめた後,rubygemsにアップロードしようと思ったら,rubygemsのドキュメントに「おまえらjeweler使えよ」的な事が書いてあったので試してみました.
Publishing your own RubyGem / Gemcutter / Knowledge Base - RubyGems.org Support
Publishing your own RubyGem によれば
rubygems のページを見るとjeweler を使えと書いてありました.
newgem は使わないみたいです.
gem を jeweler で作って公開する手順
- Gemで必要なパッケージをインストール
- rubygemsにアカウントを作る
- gitレポジトリを作って転送する.
- githubに転送する。
- rubygemsのAPIキーを設定する
- rake でGemを作成する
- gem push でサーバー転送&公開
以上になります.初期設定が終われば6,7の繰り返しになりますね.
パッケージを作る.レポジトリ作成
jeweler --create-repo noda
--create-repo オプションをつければ、これだけでgithubにもレポジトリが作られるので嬉しい.もちろんgithub関連の設定は終わらせている前提,
takuya@letsnote:~/Desktop/noda/test$ jeweler --create-repo noda create .gitignore create Rakefile create Gemfile create LICENSE.txt create README.rdoc create .document create lib create lib/noda.rb create test create test/helper.rb create test/test_noda.rb Jeweler has prepared your gem in noda Jeweler has pushed your repo to http://github.com/takuya/noda
ホームディレクトリ(/home/takuya/.gitconfig) にgithub のアカウント設定が必要.設定していない場合は設定を済ませておくこと
できあがりを確認する.
レポジトリ作成が終わると、直ぐに作業が出来るようになっている.必要なファイルやディレクトリはすべて用意されている.
実行後は、ディレクトリが次のようになっていました..
. └── noda ├── Gemfile ├── lib │   └── noda.rb ├── LICENSE.txt ├── Rakefile ├── README.rdoc └── test ├── helper.rb └── test_noda.rb 3 directories, 7 files
Rakeタスク一覧を確認する.
rake コマンドで作業は進むのでまず,Rakeを確認しておく
rake -T
rake で行うので,rake を見ておく。
takuya@letsnote:~/Desktop/noda/test/noda$ rake -T (in /home/takuya/Desktop/noda/test/noda) rake build # Build gem into pkg/ rake clobber_rcov # Remove rcov products for rcov rake clobber_rdoc # Remove rdoc products rake console[script] # Start IRB with all runtime dependencies loaded rake gemcutter:release # Release gem to Gemcutter rake gemspec # Generate and validate gemspec rake gemspec:debug # Display the gemspec for debugging purposes, as jeweler knows it (not from the filesystem) rake gemspec:generate # Regenreate the gemspec on the filesystem rake gemspec:release # Regenerate and validate gemspec, and then commits and pushes to git rake gemspec:validate # Validates the gemspec on the filesystem rake git:release # Tag and push release to git. rake install # Build and install gem using `gem install` rake rcov # Analyze code coverage with tests rake rdoc # Build the rdoc HTML Files rake release # Release gem rake rerdoc # Force a rebuild of the RDOC files rake test # Run tests rake version # Displays the current version rake version:bump:major # Bump the major version by 1 rake version:bump:minor # Bump the a minor version by 1 rake version:bump:patch # Bump the patch version by 1 rake version:write # Writes out an explicit version.
ちなみに、Rakeを確認時に、モジュール足りないエラーが出てきたので.このときrcov と shoulda をインストールした.
バージョンファイルを作る
rake version:write
バージョンファイルが無いと、Gemパッケージを作れないので,何よりまず0.0.0バージョンを示すファイルを作る
takuya@letsnote:~/Desktop/noda/test/noda$ rake version:write (in /home/takuya/Desktop/noda/test/noda) Updated version: 0.0.0
gem を作る
gem build FOOOBAAR.gemspec
いよいよgemを作ります.バージョン0.0.0で中身の空っぽのgemを作る.
takuya@letsnote:~/Desktop/noda/test/noda$ gem build noda.gemspec Successfully built RubyGem Name: noda Version: 0.0.0 File: noda-0.0.0.gem ---
APIキーを ~/.gem/credentialsに書き加える
発行されたAPIキーをホームディレクトリに設定します.
~/.gem/credentials
:rubygems_api_key: 933585a101XXXXXXXXX
gemをサーバに転送する
設定出来たらgem をサーバーに転送できます.
転送はgemコマンドで送ります.
gem push noda-0.0.0.gem
以上でできあがり.
ファイルの作成.lib にファイルを追加後の処理
lib にファイルを作ったら、そのファイルをgemspec に登録する。このへんはrake タスクで全部出来る
自作ライブラリを作ったら、RubyGems公開したパッケージを更新します.
バージョンを一つあげて,Gemを作って,転送します.
VERSION=0.0.1 echo $VERSION> VERSION #version あげる rake gemspec gem build noda.gemspec gem push noda-$VERSION.gem
日常作業
一度できてしまえば後はらく
cd path/to/my/gem rake version:bump:patch rake test git commit -a rake release
使って見て.感じたこと
別にGemが作れれば何でもイイと思うんです.僕はconsole とか付いて来てRakeが使いやすいnewgemの方が気に入りました.
newgemを使った場合でも,gem push を使えるので、基本的に同じ作業になります。
違いはRakeファイルのタスクと、初期作成ディレクトリ構成にあります。