2

我有一个运行良好的生产环境。出于测试目的,我想将所有数据库表(包括表内容!)复制到我的测试环境中。

我试过rake db:test:clone了,但这只会创建表结构,而不是内容。

是否有 rake 任务或类似的东西?

4

5 回答 5

1

试试这个:

rake db:test:prepare
于 2012-04-18T11:05:36.250 回答
0

您可以使用 Taps gem,如下所示: http ://railscasts.com/episodes/342-migrating-to-postgresql

于 2012-04-18T12:44:36.143 回答
0

看看:https ://github.com/napcs/lazy_developer

您也可以查看:http ://blog.robseaman.com/2008/12/2/production-data-to-development

于 2012-04-18T13:15:59.550 回答
0

我不认为你想要什么,但我不确定你为什么想要知道测试环境是如何工作的,你希望它发生。您基本上想要一个 shell 命令从转储中恢复。

在测试环境中,您的数据库在每次测试运行后“基本上”被分解和重建。它将加载您的固定装置/工厂,然后应用它运行的测试。测试环境的想法是您孤立地测试所有内容,除非它们是集成测试,它们对“其他测试”之前所做的事情有所了解。

综上所述,如果您的生产数据很大,那么每次都构建大生产数据可能会很糟糕。

如果数据是必不可少的,请将其复制到夹具或工厂中,您将拥有可重复的相同数据。

您想要整个数据库而不仅仅是一两个数据,还有一个更小的原因吗?

于 2012-04-18T11:26:14.950 回答
0

您可以使用yml_db gem。只需执行以下操作:

  1. 在您的 gemfile 中包含以下内容并运行 bundle install

宝石'yaml_db'

  1. 创建当前数据库的转储文件

bundle exec rake db:data:dump RAILS_ENV=production

*请注意,您需要从控制台执行此操作,该控制台可以使用 database.yml 中的设置(或您拥有它们的任何位置)访问您的生产数据库。我能够设置到我的产品服务器的 ssh 隧道,然后只需在本地运行命令,但您可能需要从服务器运行它,然后下载 /db/data.yml 文件。

  1. 假设您的转储文件现在位于 /db/data.yml 并且您有一个空的迁移数据库,您可以运行以下命令

bundle exec rake db:data:dump RAILS_ENV=development

如果您的数据库不是空的并且已迁移,请先运行rake reset

阅读这篇文章了解更多信息。

于 2015-08-28T13:50:53.473 回答