나는이 문제에 대한 답을 켜고 끄기 위해 노력했지만, 비슷한 게시물을 읽는 것은 아직 내 문제를 해결하지 못했습니다. rspec 및 spork를 사용하는 레일 응용 프로그램이 있습니다. spork없이 rspec을 실행하면 테스트는 정상적으로 실행되지만 속도는 매우 느립니다. 여기Spork를 실행할 때 PG에 연결하지 않음
ActiveRecord::StatementInvalid:
PG::ConnectionBad: connection is closed: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"orders"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
입니다 (대부분의) 내 gemfile의 : 나는 spork를 사용하는 경우, 그러나, 나는 다음과 같은 오류가 발생합니다
gem 'rails', '4.1.5'
gem 'bootstrap-sass', '2.3.2.0'
gem 'sprockets'
gem 'minitest'
gem 'bcrypt-ruby'
gem 'faker', '1.1.2'
gem 'will_paginate', '3.0.4'
gem 'bootstrap-will_paginate', '0.0.9'
gem 'pg'
gem 'cocoon'
group :development, :test do
gem 'rspec-rails'
gem 'guard-rspec'
gem 'spork-rails'
gem 'guard-spork'
gem 'childprocess'
gem 'database_cleaner'
end
group :test do
gem 'selenium-webdriver'
gem 'capybara'
gem 'factory_girl_rails'
end
... 그리고 내 database.yml을 (DEV 및 테스트) :
development:
adapter: postgresql
host: localhost
username: user
password: 'password'
database: test_app_development
test:
adapter: postgresql
host: localhost
username: user
password: 'password'
database: test_app_test
참고 : 다른 많은 유사한 게시물, 사람들은 단지 테스트를 실행하는 두 번째 이후의 시간에 유사한 오류가 발생했지만, 내 경우, 오류가 처음 실행 및 다른 모든 온다. 레일을 사용하여 dev 모드에서 PG에 연결하는 데 문제가 없습니다.
편집 나는 문제 (아마도 생각을 해결하기 위해 내 번들을 업그레이드하려고 그것을이었던 RSpec에, 가드 또는 spork 최신 버전의 해결 문제,하지만 아무 소용. 그러나 나는에 필요한 사항을 변경 않았다 spork.rb는 https://github.com/guard/guard/wiki/Upgrading-to-Guard-2.0#changes-in-guardguard에 나와 여기에 제안 또한 rspec.rb 업데이트 : 보석 업데이트와 관련된 문제를 해결 https://github.com/manafire/spork/commit/38c79dcedb246daacbadb9f18d09f50cc837de51#diff-937afaa19ccfee172d722a05112a7c6fL6을하지만, 내 원래의 문제가 해결되지 않은
편집은 여기 SPEC_HELPER 을 포함. 내 spec_helper.rb 파일 :
require 'rubygems'
require 'spork'
Spork.prefork do
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
RSpec.configure do |config|
config.use_transactional_fixtures = false
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
config.include Capybara::DSL
end
end
Spork.each_run do
end
(당신이 RSpec에 3을 사용하는 경우)'spec_helper' 또는'rails_helper'을 무엇 파일이 포함되어 있습니까? 데이터베이스 클리너가 발생할 수 있습니다 – max
spec_helper.rb를 포함하도록 내 게시물을 편집했습니다. 정직하게 DatabaseCleaner가 어떻게 작동하는지 잘 모르겠습니다. 그게 문제의 원인 인 것처럼 보입니까? –