![]() Before this commit, factory_bot registered default callbacks in a global
registry, and offered a `register_callback` method for registering any
custom callbacks (which would be fired within custom strategies).
The idea here seems to have been that we could check against this global
registry and then raise an error when referring to a callback that was
not registered.
However, nobody ever saw this error because we have always had the line:
`FactoryBot::Internal.register_callback(name)`, which registers
callbacks on the fly whenever they are referred to. (I noticed this when
a [change to default callbacks] accidentally duplicated `after_create`
instead of including `before_create`, and we didn't get any tests
failures.)
We have two options here:
1. Preserve the existing behavior by deleting all the callback
registration code. (That is what this commit does)
2. Change to the code try and capture what I assume was the original
intention. This would be a breaking change, so we would want to
introduce it in a major release. (See #1379)
I prefer preserving the existing behavior because we haven't seen any
issues around this, and making a breaking change for this doesn't seem
worthwhile.
[change to default callbacks]:
|
||
---|---|---|
.github | ||
features | ||
gemfiles | ||
lib | ||
spec | ||
.gitignore | ||
.hound.yml | ||
.rspec | ||
.rubocop.yml | ||
.simplecov | ||
.travis.yml | ||
.yardopts | ||
Appraisals | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
cucumber.yml | ||
factory_bot.gemspec | ||
Gemfile | ||
Gemfile.lock | ||
GETTING_STARTED.md | ||
LICENSE | ||
NAME.md | ||
NEWS.md | ||
Rakefile | ||
README.md | ||
RELEASING.md |
factory_bot
![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)
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.
Documentation
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.
Install
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
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 1.6.7.2+ 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
Useful Tools
- FactoryTrace - helps to find unused factories and traits.
Contributing
Please see CONTRIBUTING.md.
factory_bot was originally written by Joe Ferris and is maintained by thoughtbot. Many improvements and bugfixes were contributed by the open source community.
License
factory_bot is Copyright © 2008-2020 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.