我在新生成的Rails3.1项目的database.yml中注意到了这一点:
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".这到底是什么意思?这是否意味着即使我运行rake routes,它也会擦除并重新生成我的测试数据库?
发布于 2012-01-04 02:15:01
rake routes与rake不同
当您运行rake时,您是在告诉rake您并没有指定要运行的任务。按照惯例,Rails已将其设置为为您运行单元测试。因此,当您运行rake routes时,您已经指定了一个任务,它将不会运行单元测试。
另外:在运行迁移之后,继续运行:rake db:test:prepare
否则,您的测试DB将不会知道您的新迁移。
发布于 2012-01-04 02:12:10
当你最终销毁你的测试数据库时(相信我,这是会发生的),你可以根据开发数据库中定义的规范从头开始重建它。您可以通过运行rake :test:prepare来完成此操作。
来自Rails Guides
# Do not set this db to the same as development or production.来自database.yml
这意味着如果您将在development和test环境中使用相同的数据库,您可能会丢失数据。rake routes不会影响数据库中的数据
发布于 2012-01-04 02:18:25
当您在rails (使用rake test)中运行测试时,它所做的第一件事就是重新创建测试数据库。在rails应用程序中运行rake时的默认任务是test,因此不带参数的rake与rake test相同。
当您运行其他rake任务(如rake routes)时,它不会擦除您的数据库。
https://stackoverflow.com/questions/8716611
复制相似问题