使用Postgres + Rspec测试使用ActiveRecord模型的gem

时间:2016-10-26 14:00:06

标签: ruby-on-rails postgresql activerecord rspec rubygems

我试图使用Rspec和Postgres在gem中测试一些模型。目前正在尝试通过在spec_helper.rb文件中运行rake任务来执行此操作,该文件将在我的Rspec测试期间建立pg数据库连接。

我已经扫描了其他问题(我的方法很大程度上基于这两个问题12)并且没有发现一个好的解决方案。

由于编写代码的方式,我没有使用sqlite内存数据库功能。

自定义spec_helper如下所示:

RSpec.configure do |config|
  load "support/schema.rb"
  load File.expand_path("../../../lib/tasks/database.rake", __FILE__)
  require File.dirname(__FILE__) + 'support/models.rb'
  Rake::Task['database'].invoke

然而,当我运行rspec时,它告诉我没有连接池:

active_record/connection_adapters/abstract/connection_pool.rb:570:in
`retrieve_connection': No connection pool for ActiveRecord::Base
(ActiveRecord::ConnectionNotEstablished)

有没有人对此问题有任何建议或见解?非常感谢。

1 个答案:

答案 0 :(得分:0)

您应该建立数据库连接:

ActiveRecord::Base.establish_connection(adapter: 'postgresql', 
  encoding: 'unicode', database: '<db_name>', username: '<user>')

这应该在任何其他数据库交互(包括加载schema.rb

之前运行