Created: 2012-03-23 04:09
Updated: 2015-11-05 13:04
License: other


gem-create gem-create Build Status

This is my gem template. There are many like it, but this one is mine.

gem-create is a RubyGems plugin. It provides a gem create command which can be used to generate a skeleton for working on a new RubyGem.


First, install the gem:

gem install gem-create

Next, create a data file. By default this is in ~/.gem/skel.yml. This file contains variables that will be available in your template files. It must be a valid YAML file.

The following default variables are available in addition to any supplied in your data file:

name      # the name of the gem (eg: my_gem)
gem_class # the class name of the gem (eg: MyGem)

See spec/fixtures/skel.yml in this repo for an example data file.

Next, create your gem skeleton. By default this is in ~/.gem/skel. This directory contains files/directories that will be copied when creating a new gem. Files are rendered via ERB and may utilize the variables set in your data file (eg: <%= github_name %>).

Any file/directory with %gem_name% in it's path will be renamed when the new gem is created. Eg (assume gem create my_new_gem):

some/%gem_name% => some/my_new_gem
some/gem_name   => some/gem_name

See spec/fixtures/skel in this repo for an example gem skeleton.


Usage: gem create GEM_NAME [options]

    -f, --force                      Overwrite existing files
    -d, --destination-directory DIR  Destination directory,
                                     $PWD/GEM_NAME by default

  Skeleton Options:
        --template-directory DIR     A custom template directory to use
        --data-file PATH             Path to a YAML file containing
                                     variables that will be available
                                     in all template files

  Common Options:
    -h, --help                       Get help on this command
    -V, --[no-]verbose               Set the verbose level of output
    -q, --quiet                      Silence commands
        --config-file FILE           Use this config file instead of default
        --backtrace                  Show stack backtrace on errors
        --debug                      Turn on Ruby debugging

    Creates a new RubyGem skeleton

    --template-directory ~/.gem/skel --data-file ~/.gem/skel.yml


If ~/.gem/skel and ~/.gem/skel.yml don't work for you, you can customize them in ~/.gemrc:

create: --template-directory ~/code/gem-template --data-file ~/code/gem-template-data.yml


gem-create depends on rake and minitest for testing.

git clone git://
cd gem-create
bundle install
bundle exec rake spec

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not bump version. (If you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull).
  • Send me a pull request. Bonus points for topic branches.


Copyright (c) 2012 Joshua Priddle. See LICENSE for details.

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more