RubyGems パッケージの作り方 - rubyforge 登録まで
日本語の解説で RubyGems パッケージの作り方や rubyforge 登録までの一連の方法が書いてあるところを見かけたことがないため、エントリーにしてみます。なれると割と簡単です。
優しい RubyGems パッケージの作り方
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 アカウント名(後述)にしておいた方が無難です。
ひな形のカスタマイズ
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'とコメントアウトされている箇所を、依存関係で入れたいパッケージがあれば適当に書き換えます。たとえばライブラリ内部で ActiveRecord と ActiveSupport を使ってるので gem のインストール時に一緒に依存ライブラリとして追加したければ以下のように。
s.add_dependency('activerecord') s.add_dependency('activesupport')これで RubyGems パッケージの作り方は終わりです。かんたんに作れますね。
rubyforge への Package 登録の方法
ユーザ登録
まず 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
ssh の公開鍵の登録
subversion レポジトリのチェックアウト
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 へのコンテンツのアップロード
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 にアップしましょう!