diff --git a/lib/sessions/event/base.rb b/lib/sessions/event/base.rb index b63ea228b..dab060ed3 100644 --- a/lib/sessions/event/base.rb +++ b/lib/sessions/event/base.rb @@ -12,7 +12,12 @@ class Sessions::Event::Base return if !self.class.instance_variable_get(:@database_connection) - ActiveRecord::Base.establish_connection + if ActiveRecord::Base.connected? + @reused_connection = true + else + @reused_connection = false + ActiveRecord::Base.establish_connection + end end def self.inherited(subclass) @@ -138,6 +143,7 @@ class Sessions::Event::Base def destroy return if !@is_web_socket return if !self.class.instance_variable_get(:@database_connection) + return if @reused_connection ActiveRecord::Base.remove_connection end diff --git a/test/unit/chat_test.rb b/test/unit/chat_test.rb index 258b471f7..b3a53fbfd 100644 --- a/test/unit/chat_test.rb +++ b/test/unit/chat_test.rb @@ -58,6 +58,9 @@ class ChatTest < ActiveSupport::TestCase # with websockets assert(User.first) + # make sure to emulate unconnected WS env + ActiveRecord::Base.remove_connection + message = Sessions::Event.run( event: 'login', payload: {},