26

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:                 "example@railstutorial.org",
  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.

Andrey Deineko
  • 51,333
  • 10
  • 112
  • 145
user1072337
  • 12,615
  • 37
  • 116
  • 195
  • Do you have the faker gem? – ptd Dec 12 '14 at 21:49
  • I have the faker gem under my gemfile in group :test do – user1072337 Dec 12 '14 at 21:51
  • 4
    Were 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. – ptd Dec 12 '14 at 21:53
  • ok that worked; sorry for the waste of time. – user1072337 Dec 12 '14 at 21:55
  • 1
    It'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 the `development` environment. If you're using `Faker` in your seeds, make sure it's in both the `development` and `test` groups. – jerhinesmith Dec 12 '14 at 22:17

4 Answers4

51

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
Andrey Deineko
  • 51,333
  • 10
  • 112
  • 145
8

I faced the same issue while writing rspec and adding require 'faker' in spec file solved it.

Vbp
  • 1,912
  • 1
  • 22
  • 30
0

I added gem 'faker' in the Gemfile. Then I run bundle install to get the gem.

  • 1
    As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Sep 02 '22 at 05:53
0

As per official faker documentation, it said:

Note: if you are getting a uninitialized constant Faker::[some_class] error, your version of the gem is behind the one documented here. To make sure that your gem is the one documented here, change the line in your Gemfile to:

gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main'

But the problem still persist with mine app, since I have done this and I am getting the error again, but only when try to run the migrations to heroku:

heroku run rails db:migrate db:seed

When I run the command locally I do not have the problem and migrations and seeds are executed.

Yuriy
  • 53
  • 7