我有一个运行良好的生产环境。出于测试目的,我想将所有数据库表(包括表内容!)复制到我的测试环境中。
我试过rake db:test:clone
了,但这只会创建表结构,而不是内容。
是否有 rake 任务或类似的东西?
我有一个运行良好的生产环境。出于测试目的,我想将所有数据库表(包括表内容!)复制到我的测试环境中。
我试过rake db:test:clone
了,但这只会创建表结构,而不是内容。
是否有 rake 任务或类似的东西?
试试这个:
rake db:test:prepare
您可以使用 Taps gem,如下所示: http ://railscasts.com/episodes/342-migrating-to-postgresql
看看:https ://github.com/napcs/lazy_developer
您也可以查看:http ://blog.robseaman.com/2008/12/2/production-data-to-development
和
我不认为你想要什么,但我不确定你为什么想要知道测试环境是如何工作的,你希望它发生。您基本上想要一个 shell 命令从转储中恢复。
在测试环境中,您的数据库在每次测试运行后“基本上”被分解和重建。它将加载您的固定装置/工厂,然后应用它运行的测试。测试环境的想法是您孤立地测试所有内容,除非它们是集成测试,它们对“其他测试”之前所做的事情有所了解。
综上所述,如果您的生产数据很大,那么每次都构建大生产数据可能会很糟糕。
如果数据是必不可少的,请将其复制到夹具或工厂中,您将拥有可重复的相同数据。
您想要整个数据库而不仅仅是一两个数据,还有一个更小的原因吗?
您可以使用yml_db gem。只需执行以下操作:
宝石'yaml_db'
bundle exec rake db:data:dump RAILS_ENV=production
*请注意,您需要从控制台执行此操作,该控制台可以使用 database.yml 中的设置(或您拥有它们的任何位置)访问您的生产数据库。我能够设置到我的产品服务器的 ssh 隧道,然后只需在本地运行命令,但您可能需要从服务器运行它,然后下载 /db/data.yml 文件。
bundle exec rake db:data:dump RAILS_ENV=development
如果您的数据库不是空的并且已迁移,请先运行rake reset
。
阅读这篇文章了解更多信息。