川o・-・)<2nd life

2006 11 06

RubyGems パッケージの作り方 - rubyforge 登録まで

日本語の解説で RubyGems パッケージの作り方や rubyforge 登録までの一連の方法が書いてあるところを見かけたことがないため、エントリーにしてみます。なれると割と簡単です。

優しい RubyGems パッケージの作り方

newgem コマンドでのひな形作成

http://drnicwilliams.com/2006/10/11/generating-new-gems/

perl には module-starter など、CPAN モジュールのひな形を作ってくれる便利なユーティリティがありますが、gem でそれにあたるのが newgem というパッケージです。

使い方は簡単で、

# gem install newgem

で newgem をインストールしてから newgem コマンドを実行するだけで以下のようにひな形を作ってくれます。

$ newgem packagename
creating: packagename
creating: packagename/CHANGELOG
creating: packagename/README
creating: packagename/lib
〜以下略〜

そして cd packagename してから rake package で gem パッケージがもうできあがります。すてき!簡単!

$ rake package
(in /home/gorou/tmp/ruby/gem/packagename)
rm -r .config
〜中略〜
  Successfully built RubyGem
  Name: packagename
  Version: 0.0.1
  File: packagename-0.0.1.gem
mv packagename-0.0.1.gem pkg/packagename-0.0.1.gem

これで pkg ディレクトリ以下に gem と tar の package ができあがってます。めっちゃらく!

なお rubyforgeアップロードの予定がある人は、packagename は rubyforgeプロジェクトunix アカウント名(後述)にしておいた方が無難です。

ひな形のカスタマイズ

で、普通lib 以下にライブラリを作ったり、test を書いたり、README をきちんと書いたりします。その後 Rakefile を自分なりにカスタマイズしましょう。上の方の

AUTHOR = "secondlife"
EMAIL = "your contact email for bug fixes and info"
DESCRIPTION = "description of gem"
RUBYFORGE_PROJECT = "packagename"

あたりは適当に書き換えるとして、真ん中あたりの

#s.add_dependency('activesupport', '>=1.3.1')
#s.required_ruby_version = '>= 1.8.2'

コメントアウトされている箇所を、依存関係で入れたいパッケージがあれば適当に書き換えます。たとえばライブラリ内部で ActiveRecordActiveSupport を使ってるので gem のインストール時に一緒に依存ライブラリとして追加したければ以下のように。

s.add_dependency('activerecord')
s.add_dependency('activesupport')

これで RubyGems パッケージの作り方は終わりです。かんたんに作れますね。

rubyforge への Package 登録の方法

rubyforge とはいわゆる sourceforge みたいな rubyライブラリを簡単に登録できるウェブサービスです。BTS やらフォーラムやら様々な機能を持っていますが、実際に活用されてるのは

あたりでしょう。今回は登録の手順から svn の checkout/commit 、gem パッケージアップロードまで解説します。

ユーザ登録

まず https://rubyforge.org/account/register.php からユーザ登録をしましょう。ログイン名は unixユーザアカウントにもなります。

プロジェクトの登録

http://rubyforge.org/register/

から登録を行います。

Project full name

プロジェクト名です。Hatena API Graph とかそういう。これは後からでも変えられ(たしか)ます。

Project Purpose And Summarization

これはたぶん rubyforge 管理している人がプロジェクトの 許可/拒否 するのに使うところなので熱い思いを込めて書きましょう。

ちなみにいままで自分が申請したプロジェクトはほぼ一行の適当サマリーでしたがすべて通ったので、適当でも良さそうです(マテ)。

License

適当ライセンスを選びましょう。

Project Public Description

概要です。後からでも変えられます。

Project Unix Name

プロジェクトunix アカウントの名前です。たとえば example で登録すると、もらえるサブドメインが example.rubyforge.org になったり、svnレポジトリが /var/svn/example になったりしますので割と慎重に決めましょう。

SCM

好きな方を選びましょう。ちなみに CVS は選んだことがありません。最近subversion子は問答無用SVN でいいでしょう。

さて、すべてに記入して submit を押すと申請されます。なお実際にプロジェクトの認可が下りるまでにだいたい数時間〜十数時間かかります。

ssh の公開鍵の登録

rubyforge を簡単に使うには ssh の公開鍵の登録が欠かせません。今後解説する subversion の利用でも svn+sshssh の公開鍵が登録されてると何かと便利です。

というわけで scp なりなんなりで username@rubyforge.org:.ssh/authorized_keys を置いておきましょう。

subversion レポジトリのチェックアウト

プロジェクトの認可が通ったらせっかくなので rubyforgesubversion レポジトリを使ってみましょう。

チェックアウトは

svn co svn+ssh://secondlife@rubyforge.org/var/svn/example ./

な感じで。公開鍵が登録されており ssh-agent や keychain を使ってれば毎回パスワードの入力いらなくなるので楽です。また、デフォルトでは誰でも

svn co svn://rubyforge.org/var/svn/example ./

svn プロトコルでチェックアウトできます。

gem パッケージアップロード

それでは rake package などで作成した gem パッケージアップロードしてみましょう。プロジェクトページから右上の「ファイル」を選び、「To create a new release click here.」をクリックするするとアップロードの画面が表示されます。

そこで適当に入力して ( FileType は .gem にすることを忘れずに!)アップロードし、少したつと gem install packagename で登録したパッケージrubyforge から gem コマンドインストールできるようになります。

web へのコンテンツアップロード

rubyforge では http://hatenaauthapi.rubyforge.org/ のように、自分で scp などでコンテンツアップロードすることができます。デフォルトのままでは寂しい感じなので、rdoc で作ったドキュメントアップロードしておきましょう。

そんなときは Rake::RubyForgePublisher を使えば簡単です。Rakefile の一番下に

Rake::RDocTask.new do |rdoc|
  rdoc.rdoc_dir = 'html'
  rdoc.options += RDOC_OPTS
  rdoc.template = "#{ENV['template']}.rb" if ENV['template']
  if ENV['DOC_FILES']
    rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
  else
    rdoc.rdoc_files.include('README', 'CHANGELOG')
    rdoc.rdoc_files.include('lib/**/*.rb')
  end
end

desc "Publish to RubyForge"
task :rubyforge => [:rdoc, :package] do
  Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, 'rubyforgeのアカウント名(secondlifeとか)').upload
end

記述しておくと、

rake rubyforge

コマンドで rdoc なドキュメントが生成されて scp で自動でアップロードされます。

というわけで rubyforge の登録も割と簡単なので、いままでめんどくさそうと敬遠していた人も是非パッケージを作って rubyforge にアップしましょう!

SeasonsSeasons 2007/11/12 05:00 Windowsだと結構めんどくさーでした・・・
なので、ちょっと纏めてみました。
http://d.hatena.ne.jp/Seasons/20071113

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

プログラミングRuby 第2版 言語編
Ruby を始めようと思う人から玄人まで身近に置いておきたい一冊
Ruby on Rails入門―優しいRailsの育て方
Rails 入門書の決定版!あのくまくまーの独特な解説ですんなり読める!