Class | Rake::GemPackageTask
In: | lib/rake/gempackagetask.rb
Parent: | PackageTask

Create a package based upon a Gem spec. 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 PackageTask, a GemPackageTask will also generate the following tasks:

"package_dir/name-version.gem"
  Create a Ruby GEM package with the given name and version.

Example using a Ruby GEM spec:

      require 'rubygems'

      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 = <<EOF
      Rake is a Make-like program implemented in Ruby. Tasks
      and dependencies are specified in standard Ruby syntax.
      EOF
      end

      Rake::GemPackageTask.new(spec) do |pkg|
        pkg.need_zip = true
        pkg.need_tar = true
      end

### Methods

define gem_file init new

### Attributes

gem_spec | [RW] | Ruby GEM spec containing the metadata for this package. The name, version and package_files are automatically determined from the GEM spec and don‘t need to be explicitly provided.

### Public Class methods

new(gem_spec) {|self if block_given?| ...}

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.

[Source]

        # File lib/rake/gempackagetask.rb, line 62
    62:     def initialize(gem_spec)
    63:       init(gem_spec)
    64:       yield self if block_given?
    65:       define if block_given?
    66:     end

### Public Instance methods

define()

Create the Rake tasks and actions specified by this GemPackageTask. (`define` is automatically called if a block is given to `new`).

[Source]

        # File lib/rake/gempackagetask.rb, line 79
    79:     def define
    80:       super
    81:       task :package => [:gem]
    82:       desc "Build the gem file #{gem_file}"
    83:       task :gem => ["#{package_dir}/#{gem_file}"]
    84:       file "#{package_dir}/#{gem_file}" => [package_dir] + @gem_spec.files do
    85:         when_writing("Creating GEM") {
    86:           Gem::Builder.new(gem_spec).build
    87:           verbose(true) {
    88:             mv gem_file, "#{package_dir}/#{gem_file}"
    89:           }
    90:         }
    91:       end
    92:     end

gem_file()

[Source]

         # File lib/rake/gempackagetask.rb, line 94
     94:     def gem_file
     95:       if @gem_spec.platform == Gem::Platform::RUBY
     96:         "#{package_name}.gem"
     97:       else
     98:         "#{package_name}-#{@gem_spec.platform}.gem"
     99:       end
    100:     end

init(gem)

Initialization tasks without the "yield self" or define operations.

[Source]

        # File lib/rake/gempackagetask.rb, line 70
    70:     def init(gem)
    71:       super(gem.name, gem.version)
    72:       @gem_spec = gem
    73:       @package_files += gem_spec.files if gem_spec.files
    74:     end

[Validate]