2012-01-31 7 views
0

Итак, я создаю интеграцию, которая включает в себя отправку формы на странице. Но почему-то соединение с базой данных прерывается во время почтового запроса? Или сервер не имеет доступа к одной и той же базе данных?Capybara post request issue

Что происходит, я получаю страницу для Сообщества, но затем, когда я отправляю форму на этой странице, диспетчер, обрабатывающий сообщение, не имеет представления об этом Сообществе.

Я уже пытался отключить защиту_from_forgery. Соединения кажутся одинаковыми (согласно AR: Base.connection).

Я использую метод совместного использования пула интеграции capybara + rspec.

(ActiveRecord :: Base.shared_connection = ActiveRecord :: Base.connection)

Я использую Rails 3.0.11, RSpec 2.6.4, водосвинку (1.0.0) и капибары-WebKit (0,8 +0,0).

ответ

0

обязательно установите

RSpec.configure do |config| 
    config.use_transactional_fixtures = false 
    end 

так Капибара испытания проходит через отдельное подключение к базе данных.

+0

Я на самом деле пытаюсь избежать этого, требуя, чтобы он прошел через ту же связь. – HaloZero

+0

ok, есть ли способ проверить, работает ли shared_connection? Вы можете вытащить shared_connection и использовать transactional_fixtures = false, чтобы узнать, не исчезла ли проблема? –

0

На самом деле есть проблемы с взломом совместного доступа. Если вы используете драгоценный камень mysql2, к примеру, вы начнете видеть некоторые ошибки, как:

Mysql2::Error This connection is still waiting for a result 

Пожалуйста, используйте это. Это было написано Майком Перхамом, все ему кредиты.

class ActiveRecord::Base 
    mattr_accessor :shared_connection 
    @@shared_connection = nil 

    def self.connection 
    @@shared_connection || ConnectionPool::Wrapper.new(:size => 1) { retrieve_connection } 
    end 
end 

ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection 

Вам нужно установить камень connection_pool тоже. Это избавит вас от многих головных болей.