在> = Rails 3.2.0中创建“测试”数据库内容的最佳方法是什么?

时间:2012-02-02 14:16:50

标签: ruby-on-rails database ruby-on-rails-3 factory-bot rails-migrations

我希望能够创建几十个用户,文章(或应用程序独有的任何资源)等,以了解应用程序的外观和响应情况。这仅用于测试/开发目的,因此我希望能够将其回滚,销毁它或其他任何容易的东西。也许我正在思考它,谁知道呢。

我见过人们建议只使用标准迁移,这是一个想法,但我想要选择性地执行此操作,我不希望项目中的每个人在更新应用程序时获取示例内容。

其他人已经提到了Factory Girl,但看起来它可能是矫枉过正或者是专门用于测试的宝石的侧面使用等。这不是很清楚。

那么在这种情况下你们都做了什么?

2 个答案:

答案 0 :(得分:4)

我推荐一个rake任务。您可以将其粘贴在lib/tasks中,这样项目中的每个人都可以获得它,但不是每个人都需要运行它,并且只有在它运行时它才会执行任何操作。关于编写rake任务的This a great tutorial,请记住阅读 Rails 标题下的部分,以了解如何引入模型。

之后,你的rake任务基本上只是ruby代码。我建议使用动态find_or_create_by方法来显式创建所需的模型,如果它多次运行,则不会多次创建它们。您还可以选择在创建特定模型之前销毁它们。

我不建议使用Factory Girl,因为您可能希望明确控制模型的创建方式。

这是一个示例rake任务,以显示它是多么容易:

#lib/tasks/my_task.rake
task :fake_data => :environment do
    MyModel.find_or_create_by_name("Test")
end

然后在你的控制台中:

rake fake_data

或者:

rake fake_data RAILS_ENV=test

Ta da!

答案 1 :(得分:0)

查看Rails种子数据功能

http://railscasts.com/episodes/179-seed-data