gemを作ってrubygems.orgで公開する

できた
http://rubygems.org/gems/ArgsParser


バージョン管理はrubygems.orgにリリースするのとは別でmercurialでやってる http://bitbucket.org/shokai/argsparser-ruby/
というのは、githubでgemを作る機能が無くなって今後はrubygems.orgでやってねというメッセージが出ていたから。
なんかrubyforge.orgのgemの作り方のページも全然解説になってないし、ちょっと調べた感じではまっさらな状態からgemを作る事について書いてあるページが見つからなかったのでまとめてみる。jewelerやらcucumberというのもgemを作るのに便利なようだけど、今回はnewgemだけでやる。


参考


先に http://rubygems.org/ でgemの名前が取られてないか確認しておく方がいい。


newgemでgemの雛形を作る。ArgsParserというプロジェクト。

sudo gem install newgem gemcutter
newgem ArgsParser -T rspec

lib直下にArgsParser.rbが既に出来ているので、そこにさらにディレクトリを作ってライブラリ本体(Parser.rb)を置いた。
ArgsParser.rbを編集し、Parser.rbをrequireした。

$:.unshift(File.dirname(__FILE__)) unless
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))

directory = File.expand_path(File.dirname(__FILE__))

require File.join(directory, 'ArgsParser', 'Parser')
module ArgsParser
  VERSION = '0.0.3'

  def ArgsParser.parser
    Parser.new
  end
end
  • Rakefileの中、自分の名前やメールアドレスの項目を埋める。
  • examplesというディレクトリを作って、使用例のコードをいくつか入れる。
  • Manifest.txtにgemに含めるファイル名が列挙されている。Parser.rbやexamples下の使用例等を追加する


gemを作る

rake package

pkg/ArgsParser-0.0.1.gemやtgzができた。
バージョン番号はlib/ArgsParser.rbに書いてあったものが適応される。


rubygems.orgにpushする。

gem push pkg/ArgsParser-0.0.1.gem

ユーザ名とパスワードを訊かれるので入力する。
1分もしないうちに http://rubygems.org/gems/ArgsParser ができてて、

sudo gem install ArgsParser

するとインストールできるようになってた。


今後の予定

  • testを書く。-T rspecしわすれたのでtest-unitになっているのをrspecにしたい
  • example増やす