0

我在 rails 3 应用程序上使用 postgresql。我一直在使用 sqlite3 作为测试环境,但最终决定切换到我在生产中使用的同一个数据库进行测试。问题是,我只为每个环境创建一个数据库和不同的模式。这是我无法改变的,因为环境是受企业限制的。

因此,我有一个测试模式。我运行 db:schema:load 并且它工作正常。我在它上面运行 rake spec(我正在使用 rspec)并且它完全在来自 rails 的 'db:test:purge' 任务上中断了。现在,此任务删除数据库。在我的例子中,不仅数据库所有者与模式所有者不同,而且我宁愿让任务重新创建模式而不是重新创建数据库。

我怎样才能做到这一点?

4

2 回答 2

0

这不是您问题的直接答案,但您可以使用rspeccommand 而不是rake spec. rspec命令不会清除您的数据库。

于 2013-11-12T03:27:23.297 回答
0

实际上,这个问题并没有真正的解决方案,因为默认情况下 rails 会擦除数据库。它希望这个数据库不与生产共享(他们可能有一点)。不过,我发现了一些有趣的链接,方法是修补 rake 任务。按照补丁和链接:

namespace :db do
  namespace :test do
    task :purge do
      ActiveRecord::Migration.verbose = false
      Rake::Task["db:schema:load"].invoke
    end
  end
end
于 2013-10-21T09:55:29.883 回答