Reputation: 3491
I am using rails console in the development environment and I want to use factories. How can I get access to them?
I have tried require "FactoryBot"
which returns
1.9.3p393 :301 > require "FactoryBot"
LoadError: cannot load such file -- FactoryBot
Upvotes: 116
Views: 62145
Reputation: 2560
If you want to have it available each time you start the console, you can add this piece of code to the top of your config/environments/development.rb:
require 'factory_bot_rails'
require 'faker' # if you're also using faker gem
require 'rails/console/helpers'
Rails::ConsoleMethods.prepend(FactoryBot::Syntax::Methods)
Now you can use the built-in helpers right after starting the console, for example:
company = create(:company)
Upvotes: 16
Reputation: 24875
I do this the following way:
Start the rails console in test environment in sandbox mode.
rails console -e test --sandbox
You need this for two reasons:
Then in the console:
Require FactoryBot (was called FactoryGirl):
require 'factory_bot'
Load the factory definitions:
FactoryBot.find_definitions
Include the FactoryBot methods to avoid prefixing all calls to FB with FactoryBot
(create
instead of FactoryBot.create
):
include FactoryBot::Syntax::Methods
P.S. For fabrication gem you can load the definitions in the rails console with:
Fabrication.manager.load_definitions
Also require 'faker'
if you use it.
Upvotes: 250
Reputation: 7524
You need to require 'factory_bot_rails'
, which is the actual gem that's being used by Rails. That gem will include the Factory Bot library, making FactoryBot
available.
You can either do this, or update your Gemfile to require it at startup as in muttonlamb's answer.
Upvotes: 26
Reputation: 6491
To solve this problem ensure that the factory bot gem is specifed in your Gemfile similar to this
group :development, :test do
gem 'factory_bot_rails'
end
Then bundle install
.
This should make FactoryBot class available in the development console.
Hope this helps.
Upvotes: 46