के साथ आरएसपीसी/कैपिबरा चलाते समय डाटाबेस टाइमआउट मैं जावास्क्रिप्ट ड्राइवर (डब्ल्यू/वेबकिट या पोल्टरजिस्ट) का उपयोग कर कैपिबारा के साथ काम कर रहे कुछ आरएसपीसी उदाहरण प्राप्त करने की कोशिश कर रहा हूं लेकिन तालिका अपडेट करते समय डेटाबेस के साथ लॉकिंग समस्या है।जावास्क्रिप्ट ड्राइवर
scenario 'by changing the contract attributes', js: true do
login_as @admin, scope: :user
contract = Contract.create(number: '123',
start_at: Date.today,
end_at: Date.today + 1.month)
visit "/contracts/#{contract.id}/edit"
मैं लॉगइन करने के लिए वसीयत और Warden::Test::Helpers
उपयोग कर रहा हूँ: यहाँ सवाल में उदाहरण का हिस्सा है।
RSpec चल रहा है कुछ समय लगता है और सभी मुझे मिलता है:
Failure/Error: visit "/contracts/#{contract.id}/edit"
Capybara::Driver::Webkit::WebkitInvalidResponseError:
Unable to load URL: http://127.0.0.1:46520/contracts/1/edit
लॉग दिखाया जा रहा है एक डेटाबेस लॉकिंग मुद्दा यह है कि:
Started GET "/contracts/1/edit" for 127.0.0.1 at 2012-06-01 12:10:26 -0400
(0.2ms) BEGIN
(51083.3ms) UPDATE `users` SET `last_sign_in_at` = '2012-06-01 16:10:26', `current_sign_in_at` = '2012-06-01 16:10:26', `last_sign_in_ip` = '127.0.0.1', `current_sign_in_ip` = '127.0.0.1', `sign_in_count` = 1, `updated_at` = '2012-06-01 16:10:26' WHERE `users`.`id` = 1
Mysql2::Error: Lock wait timeout exceeded; try restarting transaction: UPDATE `users` SET `last_sign_in_at` = '2012-06-01 16:10:26', `current_sign_in_at` = '2012-06-01 16:10:26', `last_sign_in_ip` = '127.0.0.1', `current_sign_in_ip` = '127.0.0.1', `sign_in_count` = 1, `updated_at` = '2012-06-01 16:10:26' WHERE `users`.`id` = 1
(0.8ms) ROLLBACK
मैं कोशिश की है चीजों के बहुत सारे (उस सवाल का लग रहा था एक वास्तविक समाधान के निकटतम: Capybara with :js => true causes test to fail) लेकिन कुछ भी काम नहीं किया, यहां तक कि डेटाबेस क्लीनर से छुटकारा पा रहा है। क्या मैं कुछ और कोशिश कर सकता हूं?
संपादित: यहाँ spec_helper.rb
फ़ाइल के रूप में अनुरोध किया है: https://gist.github.com/2855631
क्या आप अपनी spec_helper फ़ाइल पोस्ट कर सकते हैं? – DVG
@ डीवीजी मैंने अपने प्रश्न को जिस्ट के लिंक के साथ संपादित किया है। –