NameError: uninitialized constant Faker
18,366
Solution 1
Just faced similar issue - I was running
rails g model model_name
and getting the error:
uninitialized constant Faker (NameError)
Problem was due to fact, that I had gem added to test
group.
Placing it into development
and test
group solved the problem:
group :development, :test do
# ...
gem 'faker'
# ...
end
Solution 2
I faced the same issue while writing rspec and adding require 'faker'
in spec file solved it.
Related videos on Youtube
Author by
user1072337
Updated on January 15, 2020Comments
-
user1072337 over 4 years
I am trying to run a simple bundle exec rake db:seed for my database in Rails 4. However, when running it, I get the following output:
********-C02MGBVJFD57:myapp ***********$ bundle exec rake db:seed Your Gemfile lists the gem factory_girl_rails (>= 0) more than once. You should probably keep only one of them. While it's not a problem now, it could cause errors if you change the version of just one of them later. rake aborted! NameError: uninitialized constant Faker /Users/**********/workspace/myapp/db/seeds.rb:16:in `block in <top (required)>' /Users/**********/workspace/myapp/db/seeds.rb:15:in `times' /Users/**********/workspace/myapp/db/seeds.rb:15:in `<top (required)>' /Users/**********/.rvm/gems/ruby-2.1.2@myapp/gems/railties-4.1.4/lib/rails/engine.rb:543:in `load_seed' /Users/**********/.rvm/gems/ruby-2.1.2@myapp/gems/activerecord-4.1.4/lib/active_record/tasks/database_tasks.rb:184:in `load_seed' /Users/**********/.rvm/gems/ruby-2.1.2@myapp/gems/activerecord-4.1.4/lib/active_record/railties/databases.rake:173:in `block (2 levels) in <top (required)>' Tasks: TOP => db:seed (See full trace by running task with --trace)
Here is my seeds.rb file:
User.create!( name: "Example User", email: "[email protected]", password: "foobar", password_confirmation: "foobar", admin: true ) 99.times do |n| name = Faker::Name.name email = "example-#{n+1}@railstutorial.org" password = "password" User.create!( name: name, email: email, password: password, password_confirmation: password ) end
Line 16 is:
name = Faker::Name.name
Any ideas why I am getting this error? Thank you.
-
ptd over 9 yearsDo you have the faker gem?
-
user1072337 over 9 yearsI have the faker gem under my gemfile in group :test do
-
ptd over 9 yearsWere you running
rake db:seed
in the test environment? Assuming you are running it in development, you need to add it to your development group as well. -
user1072337 over 9 yearsok that worked; sorry for the waste of time.
-
jerhinesmith over 9 yearsIt's not a waste of time if you learned something. Might be worthwhile to add your own answer at the bottom saying something like
rake db:seed
runs in thedevelopment
environment. If you're usingFaker
in your seeds, make sure it's in both thedevelopment
andtest
groups.
-
-
BenKoshy about 6 yearsin the individual tests spec file or in the rails_helper.rb file?
-
Touré Holder about 5 yearsyup... :face_palm:
-
Ali Ammaar almost 2 yearsI had to use require 'faker' in rails console in development environment, thanks