mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
c07c708cf6
Action Cable owns database connection, not Active Record
65 lines
1.7 KiB
Ruby
65 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "test_helper"
|
|
require_relative "common"
|
|
|
|
require "active_record"
|
|
|
|
class PostgresqlAdapterTest < ActionCable::TestCase
|
|
include CommonSubscriptionAdapterTest
|
|
|
|
def setup
|
|
database_config = { "adapter" => "postgresql", "database" => "activerecord_unittest" }
|
|
ar_tests = File.expand_path("../../../activerecord/test", __dir__)
|
|
if Dir.exist?(ar_tests)
|
|
require File.join(ar_tests, "config")
|
|
require File.join(ar_tests, "support/config")
|
|
local_config = ARTest.config["connections"]["postgresql"]["arunit"]
|
|
database_config.update local_config if local_config
|
|
end
|
|
|
|
ActiveRecord::Base.establish_connection database_config
|
|
|
|
begin
|
|
ActiveRecord::Base.connection
|
|
rescue
|
|
@rx_adapter = @tx_adapter = nil
|
|
skip "Couldn't connect to PostgreSQL: #{database_config.inspect}"
|
|
end
|
|
|
|
super
|
|
end
|
|
|
|
def teardown
|
|
super
|
|
|
|
ActiveRecord::Base.clear_all_connections!
|
|
end
|
|
|
|
def cable_config
|
|
{ adapter: "postgresql" }
|
|
end
|
|
|
|
def test_clear_active_record_connections_adapter_still_works
|
|
server = ActionCable::Server::Base.new
|
|
server.config.cable = cable_config.with_indifferent_access
|
|
server.config.logger = Logger.new(StringIO.new).tap { |l| l.level = Logger::UNKNOWN }
|
|
|
|
adapter_klass = Class.new(server.config.pubsub_adapter) do
|
|
def active?
|
|
!@listener.nil?
|
|
end
|
|
end
|
|
|
|
adapter = adapter_klass.new(server)
|
|
|
|
subscribe_as_queue("channel", adapter) do |queue|
|
|
adapter.broadcast("channel", "hello world")
|
|
assert_equal "hello world", queue.pop
|
|
end
|
|
|
|
ActiveRecord::Base.clear_reloadable_connections!
|
|
|
|
assert adapter.active?
|
|
end
|
|
end
|