【问题标题】:Testing Rails with Postgres database suddenly fails使用 Postgres 数据库测试 Rails 突然失败
【发布时间】:2021-04-10 12:44:03
【问题描述】:

在使用 Postgres 数据库的 Rails 项目中,我使用 rspec 进行测试。在我添加另一个迁移之前,这一直很好。现在 rspec 失败了:

Failure/Error: ActiveRecord::Migration.maintain_test_schema!

PG::ConnectionBad:
connection is closed

我尝试了多种方式准备测试数据库:

rails db:reset RAILS_ENV=test
rails db:prepare RAILS_ENV=test
rails db:migrate RAILS_ENV=test

还有

rails db:test:prepare

在我添加迁移之前,我的测试一直有效,很明显有些地方出了问题,但是什么?


编辑添加更多细节:

虽然 Postgres 日志根本没有透露,但我确实发现了以下内容:

错误出现在rails_helper.rb的这一行:

ActiveRecord::Migration.maintain_test_schema!

test 环境中的Rails 控制台,我可以毫无问题地调用maintain_test_schema! 方法:

root@0bf32217fb90:/home/dora/rails# bin/rails c -e test
Loading test environment (Rails 6.0.3.4)
[1] pry(main)> ActiveRecord::Migration.maintain_test_schema!
(1.2ms)  SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1  [["key", "schema_sha1"]]
(1.8ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
=> nil
[2] pry(main)>

显然从rspec调用方法和从控制台调用它是有区别的。

我会不断更新以供其他人说,如果有人偶然发现并知道解决方案,我将不胜感激。

【问题讨论】:

  • 尝试查看您的 postgresql 日志。
  • 日志没有包含任何揭示内容,只是关于当前时区的一些陈述。我已经用其他信息更新了我的问题。显然,错误只发生在给定的上下文中。
  • 在将我的应用程序从 Rails 5.2 升级到 6.0 后,我遇到了同样的问题。你找到解决办法了吗?谢谢。
  • @AndyWang 不幸的是没有。我在spec_helper.rb 中注释掉了调用ActiveRecord::Migration.maintain_test_schema! 的块,这让我可以运行测试,但我不认为这是一个修复...

标签: ruby-on-rails postgresql rspec


【解决方案1】:

在将 Rails 应用程序从 5.2 升级到 6.0 后,我遇到了同样的问题。最后我修复了它,详细信息在 PG::ConnectionBad(connection is closed) when running rspec after upgrading application from Rails 5.2 to 6.0 。您应该检查是否有任何 rspec 支持者覆盖了 dB 连接的创建

【讨论】:

  • 太棒了!永远不会想到支持目录中的旧垃圾是原因......按照建议,我不得不删除spec/support/shared_db_connection.rb,这不是真正的Rails文件。
【解决方案2】:

我遇到了同样的问题,在拔掉头发几个小时后,我发现我们需要将每个规范顶部的所有 require 'rails_helper 替换为 require 'spec_helper'

【讨论】:

    猜你喜欢
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    • 2021-05-24
    • 2013-06-28
    相关资源
    最近更新 更多