BUNDLE-GEM(1) General Commands Manual BUNDLE-GEM(1)
NAME
bundle-gem - 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 ex-
plained 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 exe-
cutable (as exe/GEM_NAME) in the generated rubygem project. This bi-
nary will also be added to the GEM_NAME.gemspec manifest. This be-
havior 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 speci-
fied 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.
• --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 interac-
tive 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 direc-
tory will be created based on this option. Given no option is speci-
fied:
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 dis-
played 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).
• --changelog: Generate changelog file. Set a default with bundle con-
fig set --global gem.changelog true.
• --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 configu-
ration file will be generated in the project directory. Given no op-
tion 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 dis-
played 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 develop-
ment 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 dis-
played 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_EDI-
TOR, $VISUAL, or $EDITOR.
SEE ALSO
• bundle config(1) bundle-config.1.html
March 2025 BUNDLE-GEM(1)
Generated by dwww version 1.16 on Tue Dec 16 07:00:23 CET 2025.