【问题标题】:Seed data for grails applicationgrails 应用程序的种子数据
【发布时间】:2011-02-11 22:06:49
【问题描述】:

将种子(初始或测试)数据加载到 grails 应用程序的最佳方法是什么。我正在考虑 3 个选项

  1. 将所有内容放入 *BootStrap.groovy 文件中。如果域类和测试数据很多,这很乏味。
  2. 编写自定义功能以通过 xml 加载它。 groovy 对 xml 的出色支持可能不会太难,但是对于不同的域类有很多 switch 语句。
  3. 使用 Liquibase LoadData api。我看到您可以从 csv 文件中轻松加载数据。

选择 3 似乎是最简单的。但是,我不熟悉 Liquibase。在这种情况下是否很好,或者仅用于迁移,数据库更改等。如果有人可以提供更好的解决方案,或者指向 Liquibase 的示例,那将是很大的帮助..

【问题讨论】:

    标签: grails seed


    【解决方案1】:

    【讨论】:

    【解决方案2】:

    我正在使用 Fixtures 插件来加载测试/初始数据,它适用于我。

    http://www.grails.org/plugin/fixtures

    【讨论】:

    • 感谢您的指点。同时我决定从 xml 自己做。我没有探索太多,但没有看到太多的夹具使用示例。它是否易于使用有一对多、多对多等场景?
    【解决方案3】:

    另一个答案是利用 grails run-script。这将允许您移动可能放入引导程序的内容并将其保存在文件系统上所需的位置(可能在代码库之外)。同样,您可以安装控制台插件并通过它在正在运行的应用程序上加载代码。

    根据您的数据需求,还可以查看出色的 build-test-data 插件。

    【讨论】:

    • Grails RunScript:但是,如果我们想在 QA 或 UAT 环境中执行此操作,这种方法需要我们在服务器上拥有“grails 上下文”,不是吗? grails run-script 需要 grails 以及服务器中安装的项目(源代码),对吧? grails run-script 会在 grails 开发环境之外工作吗?
    • 在这种情况下,您可能需要查看控制台或远程控制插件。使用控制台插件,您可以在具有完全访问权限的正在运行的实例上运行脚本或任意 groovy 代码。请记住,这应该在生产部署中禁用或严格保护。
    【解决方案4】:

    查看 SeedMe 插件: https://github.com/bertramdev/seed-me

    seed = {
        author(meta:[key:'name'], name: 'David', description: 'Author Bio Here')
    }
    

    【讨论】:

      【解决方案5】:

      我生成种子数据的一种方法是使用服务。我创建了一个类,我们称之为 SeederService。我可以在 Bootstrap.groovy 中注入这个服务并调用我想要的任何方法。

      SeederService 的美妙之处在于您还可以在单​​元测试中使用相同的服务。只需在单元测试中注入服务类并生成种子数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-30
        • 2014-04-15
        • 2012-04-08
        • 2017-09-22
        相关资源
        最近更新 更多