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 を利用することで容易にパッケージを作成することが可能となる。