Выдача запроса на капибару - PullRequest
0 голосов
/ 31 января 2012

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

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

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

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

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

Я использую Rails 3.0.11, rspec 2.6.4, capybara (1.0.0) и capybara-webkit (0.8.0).

Ответы [ 2 ]

0 голосов
/ 23 августа 2012

На самом деле есть проблемы с общим взломом соединения. Например, если вы используете гем 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. Это избавит вас от многих головных болей.

0 голосов
/ 01 февраля 2012

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

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

, поскольку тесты Capybara проходят через отдельное соединение с базой данных.

...