微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将应用程序从 Rails 5.2 升级到 6.0 后运行 rspec 时出现 PG::ConnectionBad连接已关闭

如何解决将应用程序从 Rails 5.2 升级到 6.0 后运行 rspec 时出现 PG::ConnectionBad连接已关闭

我尝试将我的应用程序从 Rails 5.2 升级到 6.0,升级后运行 rspec 时出现错误 PG::ConnectionBad: connection is closed

错误是由ActiveRecord::Migration.maintain_test_schema!中的表达式rails_helper.rb引起的,错误如下,

root@00de976cbbd4:/app# rspec

An error occurred while loading rails_helper.
Failure/Error: ActiveRecord::Migration.maintain_test_schema!

PG::ConnectionBad:
  connection is closed
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/quoting.rb:21:in `escape_string'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/quoting.rb:21:in `quote_string'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/quoting.rb:220:in `_quote'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/quoting.rb:144:in `_quote'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/quoting.rb:18:in `quote'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/schema_statements.rb:750:in `quoted_scope'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/schema_statements.rb:727:in `data_source_sql'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/schema_statements.rb:62:in `table_exists?'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/internal_Metadata.rb:32:in `table_exists?'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/tasks/database_tasks.rb:347:in `schema_up_to_date?'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:594:in `block in load_schema_if_pending!'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:593:in `all?'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:593:in `load_schema_if_pending!'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:614:in `block in maintain_test_schema!'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:867:in `suppress_messages'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:619:in `method_missing'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:614:in `maintain_test_schema!'
# ./spec/rails_helper.rb:30:in `<top (required)>'
No examples found.
No examples found.

我可以在控制台中启动 RAILS_ENV=test rails c 并运行 ActiveRecord::Migration.maintain_test_schema! 而不会出错。并且还尝试将 rspec 从 3.10.1 升级4-0-dev 但仍然遇到相同的错误。提前致谢。

解决方法

最后,我创建了一个新的 rails 6 应用程序,然后逐个文件复制以检查导致此错误的原因,结果是在我的 (>)/2 文件夹中有一个文件 spec/support,其中包含以下内容,这是从这个博客复制的http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/

shared_db_conntection.rb

删除这个文件后就没有这个错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。