Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Simple and opinionated helper for creating and managing Rubygem projects on GitHub
Ruby

This branch is 3 commits ahead, 614 commits behind technicalpickles:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
features
lib
test
vendor/gems/mhennemeyer-output_catcher-1.0.1
.gitignore
ChangeLog.markdown
LICENSE
README.markdown
Rakefile
TODO
VERSION.yml
jeweler.gemspec

README.markdown

Jeweler: Craft the perfect RubyGem

Jeweler provides two things:

  • Rake tasks for managing gems and versioning of a GitHub project
  • A generator for creating kickstarting a new project

Installing

# Run the following if you haven't done so before:
gem sources -a http://gems.github.com
# Install the gem:
sudo gem install technicalpickles-jeweler

Using in an existing project

It's easy to get up and running. Update your instantiate a Jeweler::Tasks, and give it a block with details about your project.

begin
  require 'jeweler'
  Jeweler::Tasks.new do |s|
    s.name = "the-perfect-gem"
    s.summary = "TODO"
    s.email = "josh@technicalpickles.com"
    s.homepage = "http://github.com/technicalpickles/the-perfect-gem"
    s.description = "TODO"
    s.authors = ["Josh Nichols"]
  end
rescue LoadError
  puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
end

In this example, s is a Gem::Specification object. See the GemSpec reference for values of interest.

Using to start a new project

Jeweler provides a generator. It requires you to setup your name and email for git and your username and token for GitHub.

jeweler the-perfect-gem

This will prepare a project in the 'the-perfect-gem' directory, setup to use Jeweler.

It supports a number of options:

  • --create-repo: in addition to preparing a project, it create an repo up on GitHub and enable RubyGem generation
  • --testunit: generate test_helper.rb and test ready for test/unit
  • --minitest: generate test_helper.rb and test ready for minitest
  • --shoulda: generate test_helper.rb and test ready for shoulda (this is the default)
  • --rspec: generate spec_helper.rb and spec ready for rspec
  • --bacon: generate spec_helper.rb and spec ready for bacon

Gemspec

Jeweler handles generating a gemspec file for your project:

rake gemspec

This creates a gemspec for your project. It's based on the info you give Jeweler::Tasks, the current version of your project, and some defaults that Jeweler provides.

Gem

Jeweler gives you tasks for building and installing your gem:

rake build
rake install

Versioning

Jeweler tracks the version of your project. It assumes you will be using a version in the format x.y.z. x is the 'major' version, y is the 'minor' version, and z is the patch version.

Initially, your project starts out at 0.0.0. Jeweler provides Rake tasks for bumping the version:

rake version:bump:major
rake version:bump:minor
rake version:bump:patch

Releasing

Jeweler handles releasing your gem into the wild:

rake release

It does the following for you:

  • Regenerate the gemspec to the latest version of your project
  • Push to GitHub (which results in a gem being build)
  • Tag the version and push to GitHub

Workflow

  • Hack, commit, hack, commit, etc, etc
  • rake version:bump:patch release to do the actual version bump and release
  • Have a delicious scotch
  • Go to Has My Gem Built Yet and wait for your gem to be built

Links

Something went wrong with that request. Please try again.