rake db:test:prepare实际上做什么?


124

我正在跟踪Rails教程视频,但无法弄清楚该db:test:prepare命令的实际作用。有人可以提供解释吗?

Answers:


119

上面的rake db:migrate在开发环境上运行所有挂起的迁移,并更新db / schema.rb。耙db:test:load从当前db / schema.rb重新创建测试数据库。在随后的尝试中,最好先运行db:test:prepare,因为它首先检查挂起的迁移并适当地警告您。

- http://guides.rubyonrails.org/testing.html

基本上,它处理克隆数据库,因此您不必针对测试运行迁移即可更新测试数据库。


19
rake db:test:prepare现在已弃用。
Jngai1297 2014年

3
上述网址是死的,这将是新的github.com/rails/rails/blob/4-1-stable/activerecord/...
痞子


4
@ Jngai1297不再!
菲利普2015年

1
@Phillipp还有一个时间guides.rubyonrails.org/v5.0/…–
yozzz

42

具体来说,rake db:test:prepare将执行以下操作:

  • 检查是否有待完成的迁移,
  • 加载测试架构

也就是说,它将查找您的db/schema.rb文件以确定项目中是否存在尚未运行的任何迁移。假设没有未完成的迁移,则它将清空数据库并根据db/schema.rb文件的内容重新加载它。


2

rake db:test:prepare是解决此类 PG问题的好方法。

“ PG :: UndefinedTable:错误:关系不存在”,带有正确的Rails命名和约定,在这里我无法执行 rake db:migrate RAILS_ENV=production

例如,当您无法为此处讨论的错误创建测试数据库时:“ PG无法定义的错误关系用户不存在”

所有这些错误都“ PG :: UndefinedTable:错误:关系xxxxx不存在”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.