【问题标题】:What does rake db:test:prepare actually do?rake db:test:prepare 实际上做了什么?
【发布时间】:2013-02-16 16:07:47
【问题描述】:

我正在关注 Rails 教程视频,但我无法弄清楚 db:test:prepare 命令的实际作用。有人可以提供解释吗?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    上面的 rake db:migrate 在 开发环境和更新 db/schema.rb。耙子 db:test:load 从当前数据库重新创建测试数据库 db/schema.rb。在随后的尝试中,最好先运行 db:test:prepare,因为它首先检查挂起的迁移并发出警告 你合适。

    -- http://guides.rubyonrails.org/testing.html

    基本上它处理克隆数据库,因此您不必针对测试运行迁移来更新测试数据库。

    【讨论】:

    【解决方案2】:

    具体来说,rake db:test:prepare 将执行以下操作:

    • 检查挂起的迁移,
    • 加载测试架构

    也就是说,它会查看您的db/schema.rb 文件以确定您的项目中是否存在任何尚未运行的迁移。假设没有未完成的迁移,它将清空数据库并根据db/schema.rb 文件的内容重新加载它。

    【讨论】:

      【解决方案3】:

      rake db:test:prepare 是解决像this 这样的 PG 问题的好方法。

      “PG::UndefinedTable: ERROR:relation does not exist”具有正确的 Rails 命名和约定”我不能只执行 rake db:migrate RAILS_ENV=production

      例如,当您无法为here 讨论的错误创建测试数据库时:“PG 未定义的错误关系用户不存在”

      围绕这个错误 "PG::UndefinedTable: 错误: 关系 xxxxx 不存在"

      【讨论】:

        猜你喜欢
        • 2013-06-02
        • 2020-11-21
        • 2015-02-26
        • 2017-06-29
        • 2013-06-13
        • 2021-10-25
        • 2011-08-12
        • 1970-01-01
        • 2010-11-27
        相关资源
        最近更新 更多