A library for setting up Ruby objects as test data.
Clone or download
composerinteralia Remove deprecated factory lookup by class (#1212)
Closes #1196

We deprecated looking up factories by class in #877. We introduced
`allow_class_lookup` option so that people could disable the behavior
entirely after fixing the deprecation warning.

In preparation for factory_bot 5, I am removing the deprecation warning
and the `allow_class_lookup` option. It is no longer possible to look
up factories by class. This has also made the ClassKeyHash decorator
unnecessary. The behavior is technically a little different now
that we are using HashWithIndifferentAccess
instead of calling to_sym on the key, but it
should behave identically for any standard,
documented factory_bot usage.
Latest commit 2e0b476 Oct 12, 2018
Failed to load latest commit information.
features Rubocop: Fix Style/StringLiterals Offenses (#1216) Oct 8, 2018
gemfiles Update Appraisal Gemfile locks Sep 18, 2018
lib Remove deprecated factory lookup by class (#1212) Oct 12, 2018
spec Remove deprecated factory lookup by class (#1212) Oct 12, 2018
.autotest Remove whitespace [Gun.io WhitespaceBot] Oct 21, 2011
.gitignore Add rubocop Sep 19, 2018
.hound.yml Ask Hound to use custom .rubocop.yml Oct 7, 2018
.rspec Remove unnecessary spec_helper requires May 21, 2018
.rubocop.yml Rubocop: Fix Layout/IndentHeredoc issues (#1215) Oct 8, 2018
.simplecov Clean up SimpleCov usage Apr 24, 2012
.travis.yml WIP for 5.0: Don't test against old versions of Ruby and Rails Sep 8, 2018
.yardopts Fix missing docs (#1172) Sep 3, 2018
Appraisals Rubocop: Fix Style/StringLiterals Offenses (#1216) Oct 8, 2018
CODE_OF_CONDUCT.md Add standard thoughtbot CODE_OF_CONDUCT.md Sep 8, 2018
CONTRIBUTING.md Replace 'girl' with 'bot' everywhere (#1051) Oct 20, 2017
GETTING_STARTED.md Remove out-of-date version numbers from guide Sep 18, 2018
Gemfile Rubocop: Fix Style/StringLiterals Offenses (#1216) Oct 8, 2018
Gemfile.lock Add rubocop Sep 19, 2018
LICENSE Update copyright year Sep 28, 2017
NAME.md Update naming history explanation Oct 24, 2017
NEWS Bump version to 4.11.1 [ci skip] Sep 7, 2018
README.md WIP for 5.0: Don't test against old versions of Ruby and Rails Sep 8, 2018
RELEASING.md Bump version to 4.11 [ci-skip] Aug 15, 2018
Rakefile Rubocop: Fix Style/StringLiterals Offenses (#1216) Oct 8, 2018
cucumber.yml Fixed issues with some attributes being skipped and added support for… Sep 15, 2009
factory_bot.gemspec Rubocop: Fix Style/StringLiterals Offenses (#1216) Oct 8, 2018


factory_bot Build Status Code Climate Gem Version Reviewed by Hound

factory_bot is a fixtures replacement with a straightforward definition syntax, support for multiple build strategies (saved instances, unsaved instances, attribute hashes, and stubbed objects), and support for multiple factories for the same class (user, admin_user, and so on), including factory inheritance.

If you want to use factory_bot with Rails, see factory_bot_rails.

Interested in the history of the project name?

Transitioning from factory_girl?

Check out the guide.


You should find the documentation for your version of factory_bot on Rubygems.

See GETTING_STARTED for information on defining and using factories. We also have a detailed introductory video, available for free on Upcase.


Add the following line to Gemfile:

gem 'factory_bot'

and run bundle install from your shell.

To install the gem manually from your shell, run:

gem install factory_bot

Caveat: As of ActiveSupport 5.0 and above, Ruby 2.2.2+ is required. Because of Rubygems' dependency resolution when installing gems, you may see an error similar to:

$ gem install factory_bot
ERROR:  Error installing factory_bot:
    activesupport requires Ruby version >= 2.2.2.

To bypass this, install a pre-5.0 version of ActiveSupport before installing manually.

Supported Ruby versions

The factory_bot 5.x series supports MRI Ruby 2.3+.

The factory_bot 3.x+ series supports MRI Ruby 1.9. Additionally, factory_bot 3.6+ supports JRuby while running in 1.9 mode. See GETTING_STARTED for more information on configuring the JRuby environment.

For versions of Ruby prior to 1.9, please use factory_bot 2.x.

More Information

You may also find useful information under the factory_girl tag on Stack Overflow.


Please see CONTRIBUTING.md.

factory_bot was originally written by Joe Ferris and is now maintained by Josh Clayton. Many improvements and bugfixes were contributed by the open source community.


factory_bot is Copyright © 2008-2016 Joe Ferris and thoughtbot. It is free software, and may be redistributed under the terms specified in the LICENSE file.

About thoughtbot


factory_bot is maintained and funded by thoughtbot, inc. The names and logos for thoughtbot are trademarks of thoughtbot, inc.

We love open source software! See our other projects or hire us to design, develop, and grow your product.