【问题标题】:Best way to fill development db in rails在 Rails 中填充开发数据库的最佳方法
【发布时间】:2011-03-17 18:27:08
【问题描述】:

我需要用数据填充 test 开发数据库,​​例如来自 factorygirl,但我想从 rails 控制台使用它。
我如何将示例数据放入 db 以便我可以从控制台获取它并在那里进行一些测试?

【问题讨论】:

  • 检查stackoverflow.com/questions/1050047/…。希望对你有帮助
  • 为什么在测试数据库中需要这个?不会只是让它为您开发工作吗?通常,测试数据库会被重置和重新创建太多,以至于没有必要用任何大量数据预填充它
  • 编辑了我的问题,当然我的意思是开发数据库。

标签: ruby-on-rails


【解决方案1】:

Faker 也是一个不错的解决方案。

这是我的lib/tasks/sample_data.rake 的样子。我用rake db:populate 运行它。

使用随机信息创建 50 个条目。

require 'faker'

namespace :db do
  desc "Fill database with sample data"
  task :populate => :environment do
    Rake::Task['db:reset'].invoke
    50.times do |n|
      name  = Faker::Company.name
      year = 1900+rand(111)
      rating = 1+rand(10)
      watched = (1 == rand(2) ? true : false)
      imdb_id = rand(1000000)
      Movie.create!(:name => name,
                    :year => year,
                    :rating => rating,
                    :watched => watched,
                    :imdb_id => imdb_id)
    end
  end
end

【讨论】:

  • 应该是lib/tasks/sample_data.rake...文件后缀不对,rake找不到这个任务!
【解决方案2】:

我制作了一个 gem test_dummy,它的作用类似于 Factory Girl 来定义大量虚假数据。正确配置后,您可以执行以下操作:

# Create 100 fake companies
100.times { Company.create_dummy }

# Create a single fake company on-demand
fake_company = Company.create_dummy

另一种方法是使用db/seeds.rb 工具或将您的固定装置加载到您的开发环境中。

【讨论】:

  • 我应该把这段代码放在哪里?在seeds.rbsample_data.rb
  • @methyl seeds.rb 用于您的应用程序运行所需的真实数据。例如,邮政编码、州、国家、税收规则等的列表。
  • @iconoclast 在事发后将近 7 年才回复到今天总比没有好,对吧?
  • @tadman:有趣的时机......但我从来没有认为 StackOverflow 问题仅仅基于时间的流逝而变得无关紧要——只有当技术变化使问题变得无关紧要时——所以我会说“ evernever" 更好,因为没有什么让我的评论“迟到”(好像我应该在 7 年前写它或其他什么?)
  • @iconoclast 只是在开玩笑。额外的解释总是受到赞赏,因为它可能对其他人有所帮助。
【解决方案3】:

作为 railstutorial.org 计划的一部分,Michael Hartl 对该主题进行了出色的介绍。

他使用了一个名为 Factory Girl 的 gem,旨在简化使用示例数据填充数据库的过程。

例如

http://ruby.railstutorial.org/chapters/user-microposts#sec:sample_microposts

https://github.com/railstutorial/sample_app/blob/master/lib/tasks/sample_data.rake

【讨论】:

    【解决方案4】:

    它只是在 Rails 控制台中还是只是“从控制台”?

    我喜欢使用 Thor 或 Rake 任务来执行此操作。我使用机械师而不是工厂女孩。

    你可能想检查这个答案

    Rails: Good Rspec2 example usage? (Also: Cucumber, Pickle, Capybara)

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2011-02-08
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多