Sha256: 78bc0fef945b1ab0161d0e15310313fa63e8d2fcc343bc08cd950c03dd797715

Contents?: true

Size: 915 Bytes

Versions: 11

Compression:

Stored size: 915 Bytes

Contents

# frozen_string_literal: true

module Cucumber
  module Rails
    module Database
      class SharedConnectionStrategy < Strategy
        def before_js
          # Forces all threads to share a connection on a per-model basis,
          # as connections may vary per model as per establish_connection. This works
          # on Capybara because it starts the web server in a thread.
          ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
          ActiveRecord::Base.descendants.each do |model|
            model.shared_connection = model.connection
          end
        end

        def before_non_js
          # Do not use a shared connection unless we're in a @javascript scenario
          ActiveRecord::Base.shared_connection = nil
          ActiveRecord::Base.descendants.each do |model|
            model.shared_connection = nil
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
cucumber-rails-3.1.1 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-3.1.0 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-3.0.1 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-3.0.0 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-3.0.0.rc.1 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-2.6.1 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-2.6.0 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-2.5.1 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-2.5.0 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-2.4.0 lib/cucumber/rails/database/shared_connection_strategy.rb
cucumber-rails-2.3.0 lib/cucumber/rails/database/shared_connection_strategy.rb