【问题标题】:Uninitialized constant Faker::Restaurant in rake taskrake 任务中未初始化的常量 Faker::Restaurant
【发布时间】:2018-09-22 05:06:02
【问题描述】:

我已经设置了一个 rake 任务来填充我的数据库,虽然一切似乎都已经到位,但它似乎找不到 Faker。

耙任务:

require 'faker'

desc 'Populate db'
task :popdb => [:environment] do 
    puts 'Generating categories...'

    5.times do
        category = Category.create(title: Faker::Restaurant.name)
        puts "Created category \"" + category.title + "\""
        50.times do
            card = Card.create(
                retailer: Faker::Company.name,
                category: category,
                offer_type: Faker::Company.buzzword,
                first_purchase: Faker::Company.industry,
                credit_limit: Faker::Number.between(10, 50) * 10
                )
            puts "Created card \"" + card.title + "\""
        end
    end
end

宝石文件:

  source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end

gem 'devise', '~> 4.2'
gem 'pg'
gem 'rails', '~> 5.1.6'
gem 'puma', '~> 3.7'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'activeadmin'

group :development, :test do
  gem 'rspec-rails'
  gem 'factory_bot_rails'
  gem 'shoulda-matchers', '~> 3.1'
  gem 'faker'
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'better_errors'
  gem 'binding_of_caller'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

我使用的是最新版本的 Faker,并且我的 gem 包含在测试和开发环境中。我错过了什么?谢谢!

【问题讨论】:

  • 请检查下面给出的答案,如果对您有帮助,请随时接受/支持未来的 SO 答案。 :)

标签: ruby-on-rails ruby faker


【解决方案1】:

您实际上在 ruby​​gems.org 中使用了 gem,该版本是 1.9.1 - 2018 年 7 月 11 日,但 Faker::Restaurant 是在 7 月 18 日添加的,可能是在 ruby​​gems.org 的下一个版本中可用。

(见https://github.com/stympy/faker/blob/master/doc/restaurant.md

就像上面评论所建议的那样使用:

gem 'faker', :git => 'https://github.com/stympy/faker.git', :branch => 'master'

这将从 github 而不是 ruby​​gems.org 下载 gem

【讨论】:

  • 就是这样!感谢您的帮助。
【解决方案2】:

注意:

如果您收到 uninitialized constant Faker::[some_class] 错误,则您的 gem 版本落后于此处记录的版本。为确保您的 gem 是此处记录的,请将 gemfile 中的行更改为:

gem 'faker', :git => 'https://github.com/stympy/faker.git', :branch => 'master'

https://github.com/stympy/faker#installing

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2015-02-11
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    相关资源
    最近更新 更多