代码之家  ›  专栏  ›  技术社区  ›  noodl

Rails rake任务,用于将live(MySQL)数据库加载到本地开发数据库

  •  5
  • noodl  · 技术社区  · 15 年前

    多年来我一直使用ssh管道 mysqldump 在实时服务器上 mysql 在我的开发机器上获取当前数据的副本。

    ssh -C <server> mysqldump --opt <live_database_name> |mysql <local_dev_database_name>
    

    在哪里? -C 启用ssh压缩和 --opt 实现快速性和完整性。

    有没有人有类似rails的rake任务?理想情况下,它会从config/database.yml中获取数据库名称

    5 回复  |  直到 15 年前
        1
  •  4
  •   Adam Wróbel    15 年前

    https://gist.github.com/750129

    这不是一个优雅的解决方案。它基本上是旧方法的包装器,因此它甚至与其他数据库驱动程序都不兼容。

    但是,可以将它放在SCM的lib/tasks下,与团队中的其他开发人员共享。它还使用来自现有的配置/数据库ASYML文件的配置数据。您只需向该文件添加另一个分支即可定义live db,并且它使用与Rails相同的键名。

    也许重用生产数据库配置是有意义的。

        2
  •  2
  •   cdmwebs    15 年前

    以下是我用于Postgres数据库的一个: https://gist.github.com/748222 .

    有三项任务: db:download , db:replace db:restore . 数据库:还原 只是把另外两个包裹起来。

    我想你也可以很快为Mysql做类似的事情。在这种情况下,我只是使用最新的备份,而不是在运行时创建它。

        3
  •  1
  •   Daniel Lidström    15 年前

    如果你对用Ruby编写代码很在行的话,你可能会想看看 seed-fu activerecord-import .

    哦,我忘了提 standalone-migrations . 它附带了一个用于模式迁移的Rake任务。

    祝你好运!

        4
  •  1
  •   DGM    15 年前

    我将使用capistrano任务来代替rake,因为capistrano任务已经知道生产服务器在哪里,等等。。。

        5
  •  0
  •   Aditya Sanghi    15 年前

    理论上,您应该能够在database.yml(为您的实时服务器)中创建另一个“实例”,并在其中放置正确的主机(并保留其余的用户名/密码等)。在rake任务中,您将加载数据库yaml文件,读取主机并继续执行命令行slurpiness。它很容易被一个rake任务包起来。