Spork, Rails3, RSpec2, Capybara 및 FactoryGirl 사용. 나는 다음과 같은 오류를 얻을 카피 바라 테스트를 실행하는 중에다음과 같은 오류가 발생하는 이유는 무엇입니까? "Mysql2 :: 오류 : MySQL 연결이 닫혔습니다 : 테이블 표시"
: database.yml을 사용한다
Failure/Error: model = FactoryGirl.create(:model)
ActiveRecord::StatementInvalid:
Mysql2::Error: closed MySQL connection: SHOW TABLES
MySQL 데이터베이스를, 및 실행. database.yml과 동일한 설정을 사용하여 명령 줄에서 연결할 수 있습니다.
테스트가 정상적으로 작동했는데 왜 테스트에 실패했는지 파악하려고 시도하고 나서이 오류가 발생하기 시작했습니다.
데이터베이스를 종료하고 다시 시작하지 않으려 고 시도했습니다. 내 사양에서 database.yml을
test:
adapter: mysql2
encoding: utf8
reconnect: false
database: mysql_app_test
pool: 5
username: root
password:
host: localhost
에서
require 'spec_helper'
describe "Model", :js => true do
before(:each) do
model = FactoryGirl.create(:model)
visit model_path(model)
end
it "should show the button" do
# Start the lesson
find("#startButton")
end
end
UPDATE : 관련된 Capybara Transactional Fixtures Issue에 그것은 내가 solution 3를 사용하고 언급하는 것도 중요
non Rack :: Test 드라이버.
나는 파일과 같이 내 spec_helper.rb에 내 솔루션을 배치했다 :
Spork.prefork do
...
class ActiveRecord::Base
mattr_accessor :shared_connection
@@shared_connection = nil
def self.connection
@@shared_connection || retrieve_connection
end
end
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
...
end
나는 solution 2의 댓글에서 issues when using solution 3 with spork 유사가 있다고 들었다. 코멘트 작성자가 언급 한 문제인지 확실하지 않습니다.
명령 줄에서 SHOW TABLES 명령을 실행 해 보셨습니까? –
그래, 나는 동일한 사용자/암호/데이터베이스와 MySQL에 로그인 할 수 있으며 표시 테이블을 실행합니다. 예상대로 작동합니다. – plainjimbo
MySQL2 github : https : // github에서 제기 된 문제가 있습니다. – plainjimbo