Browse Source

Refactoring: Allow re-usage of existing DB connection instead of creating/resetting existing one.

Thorsten Eckel 6 years ago
parent
commit
030f80e3eb
2 changed files with 10 additions and 1 deletions
  1. 7 1
      lib/sessions/event/base.rb
  2. 3 0
      test/unit/chat_test.rb

+ 7 - 1
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

+ 3 - 0
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: {},