Rake::Release

Customized fork for bundlers gem task helpers.

Automatically detects multiple gemspecs and protect from releasing code not matching git version tag.

Installation

Add this line to your Gemfile:

gem 'rake-release'

Usage

Simply require in Rakefile:

require 'rake/release'

Check with rake -D:

rake build
    Build rake-release-0.2.1.gem.gem into the pkg directory.

rake install
    Build and install rake-release-0.2.1.gem into system gems.

rake install:local
    Build and install rake-release-0.2.1.gem into system gems without network access.

rake release[remote]
    Create and push tag v0.2.1, build gem and publish to rubygems.org.

With multiple gemspecs

> rake -T
rake lib-alpha:build            # Build lib-alpha-0.6.0.gem.gem into the pkg directory
rake lib-alpha:install          # Build and install lib-alpha-0.6.0.gem into system gems
rake lib-alpha:install:local    # Build and install lib-alpha-0.6.0.gem into system gems without network access
rake lib-alpha:release[remote]  # Create and push tag v0.6.0, build gem and publish to rubygems.org
rake lib-beta:build             # Build lib-beta-0.8.0.gem.gem into the pkg directory
rake lib-beta:install           # Build and install lib-beta-0.8.0.gem into system gems
rake lib-beta:install:local     # Build and install lib-beta-0.8.0.gem into system gems without network access
rake lib-beta:release[remote]   # Create and push tag v0.6.0, build gem and publish to rubygems.org

With tag signing

Enable tag signing by manually loading the task:

require 'rake/release/task'

Rake::Release::Task.new do |spec|
  spec.sign_tag = true
end

Or with multiple gems:

require 'rake/release/task'

Rake::Release::Task.load_all do |spec|
  spec.sign_tag = true
end

Manually set namespace

require 'rake/release/task'

Rake::Release::Task.new do |spec|
  spec.namespace = 'client'
end
> rake -T
rake client:build            # Build rake-release-0.6.0.gem.gem into the pkg directory
rake client:install          # Build and install rake-release-0.6.0.gem into system gems
rake client:install:local    # Build and install rake-release-0.6.0.gem into system gems without network access
rake client:release[remote]  # Create and push tag v0.6.0, build gem and publish to rubygems.org

Set gem host and version tag

You can customize the task e.g. with a custom git tag or gem push host:

Rake::Release::Task.load_all do |spec|
  spec.version_tag = "gem-v#{spec.version}"
  spec.host = 'https://user:pass@gemhost/'
end

License

MIT