如何在Ruby on Rails中将生产数据库复制到我的测试数据库?

时间:2012-04-18 11:01:20

标签: ruby-on-rails database rake

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

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

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

5 个答案:

答案 0 :(得分:1)

试试这个:

rake db:test:prepare

答案 1 :(得分:0)

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

在测试环境中,您的数据库被分解并在每次测试运行后“基本上”重建。它将加载你的灯具/工厂,然后应用它运行的测试。测试环境的想法是你单独测试所有东西,除非它们是集成测试,它们能够理解之前做过的“其他测试”。

现在要说的是,如果您的生产数据很大,每次构建大量生产数据可能会很糟糕。

如果数据必不可少,请将其复制到灯具或工厂中,并且您可以重复使用相同的数据。

您是否有更小的理由想要整个数据库,而不仅仅是一两个数据?

答案 2 :(得分:0)

您可以使用点击宝石,如下所示: http://railscasts.com/episodes/342-migrating-to-postgresql

答案 3 :(得分:0)

答案 4 :(得分:0)

你可以使用yml_db宝石。只需执行以下操作:

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

    gem'yaml_db'

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

      bundle exec rake db:data:dump RAILS_ENV = production

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

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

        bundle exec rake db:data:dump RAILS_ENV = development

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

        阅读this post了解详情。