Rails灯具与种子

时间:2015-03-19 05:56:41

标签: ruby-on-rails fixtures

我正在学习Ruby on Rails,我想确保理解灯具和种子数据之间的区别。

我理解的是,fixtures基本上是测试数据,你运行你的测试断言,并且一旦你的测试完成就没有持久性,而你在做{{1}之类的事情时自动放入数据库的种子}。

为什么在这种情况下使用种子?只是为了避免写出所有无数的测试断言?对于应用程序投入生产时您需要在数据库中的数据吗?

(我猜,静态数据总是像留言板上的第一个管理员那样?)

2 个答案:

答案 0 :(得分:12)

你做对了。种子数据是使用允许应用程序从一开始就可用的必备数据填充数据库,比如添加一个默认的管理员帐户,该帐户是应用程序从一开始就可以管理的。

种子数据不应该用于测试目的,在测试时你应该始终确保数据库是干净的,这样你就知道一个例子使用的唯一数据就是这个例子填充的数据,而不是来自外面的任何地方,这可以避免混淆。

灯具是这样做的一种方式。但更好的方法是使用像factory girl这样的工厂,请查看railscast episode以获得更好的解释。

答案 1 :(得分:6)

许多应用需要一些数据才能正常运行。例如,国家/地区和邮政编码列表。或者,即使数据库中还没有用户,用户可以承担的潜在角色列表。

根据启动和运行开发环境所需的内容来考虑种子数据。通常,对于一个新的Rails开发人员来处理任何应用程序,该过程应始终如下:

  1. 克隆回购
  2. 通过bundler安装宝石
  3. 创建为开发和测试数据库设置种子
  4. 运行应该通过的测试