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:
- “package_dir/name-version.gem”
-
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.summary = "Ruby based make-like utility."
s.name = 'rake'
s.version = PKG_VERSION
s.requirements << 'none'
s.files = PKG_FILES
s.description = <<-EOF
Rake is a Make-like program implemented in Ruby. Tasks
and dependencies are specified in standard Ruby syntax.
EOF
end
Gem::PackageTask.new(spec) do |pkg|
pkg.need_zip = true
pkg.need_tar = true
end
Attributes
[RW] | gem_spec | Ruby |
Class Public methods
new(gem_spec) Link
Create a Gem Package task library. Automatically define the gem if a block is given. If no block is supplied, then define
needs to be called to define the task.
Instance Public methods
define() Link
Create the Rake tasks and actions specified by this Gem::PackageTask
. (define
is automatically called if a block is given to new
).
# File ruby/lib/rubygems/package_task.rb, line 93 def define super 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 task package: [:gem] directory package_dir directory gem_dir 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::Package.build gem_spec verbose trace do mv gem_file, ".." end end end end end
init(gem) Link
Initialization tasks without the “yield self” or define operations.