bundle-gem(1) -- Generate a project skeleton for creating a rubygem
===================================================================

## SYNOPSIS

`bundle gem` <GEM_NAME> [OPTIONS]

## DESCRIPTION

Generates a directory named `GEM_NAME` with a `Rakefile`, `GEM_NAME.gemspec`,
and other supporting files and directories that can be used to develop a
rubygem with that name.

Run `rake -T` in the resulting project for a list of Rake tasks that can be used
to test and publish the gem to rubygems.org.

The generated project skeleton can be customized with OPTIONS, as explained
below. Note that these options can also be specified via Bundler's global
configuration file using the following names:

* `gem.coc`
* `gem.mit`
* `gem.test`

## OPTIONS

* `--exe`, `--bin`, `-b`:
  Specify that Bundler should create a binary executable (as `exe/GEM_NAME`)
  in the generated rubygem project. This binary will also be added to the
  `GEM_NAME.gemspec` manifest. This behavior is disabled by default.

* `--no-exe`:
  Do not create a binary (overrides `--exe` specified in the global config).

* `--coc`:
  Add a `CODE_OF_CONDUCT.md` file to the root of the generated project. If
  this option is unspecified, an interactive prompt will be displayed and the
  answer will be saved in Bundler's global config for future `bundle gem` use.

* `--no-coc`:
  Do not create a `CODE_OF_CONDUCT.md` (overrides `--coc` specified in the
  global config).

* `--changelog`:
  Add a `CHANGELOG.md` file to the root of the generated project. If
  this option is unspecified, an interactive prompt will be displayed and the
  answer will be saved in Bundler's global config for future `bundle gem` use.
  Update the default with `bundle config set --global gem.changelog <true|false>`.

* `--no-changelog`:
  Do not create a `CHANGELOG.md` (overrides `--changelog` specified in the
  global config).

* `--ext=c`, `--ext=rust`:
  Add boilerplate for C or Rust (currently [magnus](https://docs.rs/magnus) based) extension code to the generated project. This behavior
  is disabled by default.

* `--no-ext`:
  Do not add extension code (overrides `--ext` specified in the global
  config).

* `--git`:
  Initialize a git repo inside your library.

* `--github-username=GITHUB_USERNAME`:
  Fill in GitHub username on README so that you don't have to do it manually. Set a default with `bundle config set --global gem.github_username <your_username>`.

* `--mit`:
  Add an MIT license to a `LICENSE.txt` file in the root of the generated
  project. Your name from the global git config is used for the copyright
  statement. If this option is unspecified, an interactive prompt will be
  displayed and the answer will be saved in Bundler's global config for future
  `bundle gem` use.

* `--no-mit`:
  Do not create a `LICENSE.txt` (overrides `--mit` specified in the global
  config).

* `-t`, `--test=minitest`, `--test=rspec`, `--test=test-unit`:
  Specify the test framework that Bundler should use when generating the
  project. Acceptable values are `minitest`, `rspec` and `test-unit`. The
  `GEM_NAME.gemspec` will be configured and a skeleton test/spec directory will
  be created based on this option. Given no option is specified:

  When Bundler is configured to generate tests, this defaults to Bundler's
  global config setting `gem.test`.

  When Bundler is configured to not generate tests, an interactive prompt will
  be displayed and the answer will be used for the current rubygem project.

  When Bundler is unconfigured, an interactive prompt will be displayed and
  the answer will be saved in Bundler's global config for future `bundle gem`
  use.

* `--no-test`:
  Do not use a test framework (overrides `--test` specified in the global
  config).

* `--ci`, `--ci=circle`, `--ci=github`, `--ci=gitlab`:
  Specify the continuous integration service that Bundler should use when
  generating the project. Acceptable values are `github`, `gitlab`
  and `circle`. A configuration file will be generated in the project directory.
  Given no option is specified:

  When Bundler is configured to generate CI files, this defaults to Bundler's
  global config setting `gem.ci`.

  When Bundler is configured to not generate CI files, an interactive prompt
  will be displayed and the answer will be used for the current rubygem project.

  When Bundler is unconfigured, an interactive prompt will be displayed and
  the answer will be saved in Bundler's global config for future `bundle gem`
  use.

* `--no-ci`:
  Do not use a continuous integration service (overrides `--ci` specified in
  the global config).

* `--linter`, `--linter=rubocop`, `--linter=standard`:
  Specify the linter and code formatter that Bundler should add to the
  project's development dependencies. Acceptable values are `rubocop` and
  `standard`. A configuration file will be generated in the project directory.
  Given no option is specified:

  When Bundler is configured to add a linter, this defaults to Bundler's
  global config setting `gem.linter`.

  When Bundler is configured not to add a linter, an interactive prompt
  will be displayed and the answer will be used for the current rubygem project.

  When Bundler is unconfigured, an interactive prompt will be displayed and
  the answer will be saved in Bundler's global config for future `bundle gem`
  use.

* `--no-linter`:
  Do not add a linter (overrides `--linter` specified in the global config).

* `--rubocop`:
  Add rubocop to the generated Rakefile and gemspec. Set a default with `bundle config set --global gem.rubocop true`.

* `--edit=EDIT`, `-e=EDIT`:
  Open the resulting GEM_NAME.gemspec in EDIT, or the default editor if not
  specified. The default is `$BUNDLER_EDITOR`, `$VISUAL`, or `$EDITOR`.

* `--bundle`:
  Run `bundle install` after creating the gem.

* `--no-bundle`:
  Do not run `bundle install` after creating the gem.

## SEE ALSO

* [bundle config(1)](bundle-config.1.html)
