rake で出来ること
rubyforge にホスティングする gem パッケージを作成する際に rake で出来ること(Rakefile で記述できること)のまとめ。
- RDocTask による RDoc ドキュメントの生成
- GemPackageTask による gem パッケージの生成
- PackageTask による tar.gz, tar.bz2 など各種パッケージ形式の生成
- RubyForgePublisher による html ドキュメントのアップロード(使ってないので解説しません)
RDocTask による RDoc ドキュメントの生成は以下のように行う。
Rake::RDocTask.new do |rd|
rd.main = "README"
rd.rdoc_files.include "README", "lib/**/*.rb"
rd.rdoc_dir = "doc/rdoc"
rd.options = PKG_RDOC_OPTIONS
end
RDocTask オブジェクトに渡されたブロックの引数は RDocTask オブジェクト自身である。
rd に対する操作はそのまま rdoc コマンドに渡されるように設計されている。
RDocTask のインスタンスメソッドとして提供されていないrdocコマンドへの引数は options へ Array として渡せばよい。
GemPackageTask による gem パッケージの生成および PackageTask による tar.gz, tar.bz2 など各種パッケージ形式の生成は以下のように行う。
spec = Gem::Specification.new do |s|
s.summary = "summary"
s.description = "description"
s.name = PKG_NAME
s.version = PKG_VERSION
s.files = PKG_FILES
s.email = "your@mail.co.jp"
s.homepage = "http://yourproject.rubyforge.org/"
s.authors = ["your name"]
s.test_files = ["test/runner.rb"]
s.has_rdoc = true
s.rdoc_options << PKG_RDOC_OPTIONS
s.extra_rdoc_files = ["README"]
end
Rake::GemPackageTask.new(spec) do |pkg|
pkg.need_tar_gz = true
pkg.need_tar_bz2 = true
end
GemPackageTask.new に対して Gem::Specification オブジェクトを渡すことで非常に見通しがよく、重複のない Rakefile 記述にすることが可能となっている。
GemPackageTask は PackageTask のサブクラスであり、必要とするパッケージ形式が他にもあれば(例えば .zip など)、単にpkg.need_*** = true とするだけである。
このように rake を利用することで容易にパッケージを作成することが可能となる。