Create a package based upon a Gem::Specification. Gem packages, as well as zip files and tar/gzipped packages can be produced by this task.
In addition to the Rake targets generated by Rake::PackageTask, a Gem::PackageTask will also generate the following tasks:
Create a RubyGems package with the given name and version.
Example using a Gem::Specification:
require 'rubygems' require 'rubygems/package_task' spec = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.summary = "Ruby based make-like utility." s.name = 'rake' s.version = PKG_VERSION s.requirements << 'none' s.require_path = 'lib' s.autorequire = 'rake' s.files = PKG_FILES s.description = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax. " end Gem::PackageTask.new(spec) do |pkg| pkg.need_zip = true pkg.need_tar = true end
Ruby Gem::Specification containing the metadata for this package. The name, version and package_files are automatically determined from the gemspec and don’t need to be explicitly provided.
Create the Rake tasks and actions specified by this Gem::PackageTask. (define is
automatically called if a block is given to new).
# File rubygems/package_task.rb, line 98
def define
super
task :package => [:gem]
gem_file = File.basename gem_spec.cache_file
gem_path = File.join package_dir, gem_file
gem_dir = File.join package_dir, gem_spec.full_name
desc "Build the gem file #{gem_file}"
task :gem => [gem_path]
trace = Rake.application.options.trace
Gem.configuration.verbose = trace
file gem_path => [package_dir, gem_dir] + @gem_spec.files do
chdir(gem_dir) do
when_writing "Creating #{gem_spec.file_name}" do
Gem::Builder.new(gem_spec).build
verbose trace do
mv gem_file, '..'
end
end
end
end
end
Commenting is here to help enhance the documentation. For example, sample code, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.