aboutsummaryrefslogtreecommitdiffstats
path: root/lib/action_cable/connection/identification.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/action_cable/connection/identification.rb')
-rw-r--r--lib/action_cable/connection/identification.rb16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/action_cable/connection/identification.rb b/lib/action_cable/connection/identification.rb
index 701e6885ad..431493aa70 100644
--- a/lib/action_cable/connection/identification.rb
+++ b/lib/action_cable/connection/identification.rb
@@ -1,3 +1,5 @@
+require 'set'
+
module ActionCable
module Connection
module Identification
@@ -22,12 +24,22 @@ module ActionCable
# Return a single connection identifier that combines the value of all the registered identifiers into a single gid.
def connection_identifier
- @connection_identifier ||= connection_gid identifiers.map { |id| instance_variable_get("@#{id}") }.compact
+ unless defined? @connection_identifier
+ @connection_identifier = connection_gid identifiers.map { |id| instance_variable_get("@#{id}") }.compact
+ end
+
+ @connection_identifier
end
private
def connection_gid(ids)
- ids.map { |o| (o.try(:to_global_id) || o).to_s }.sort.join(":")
+ ids.map do |o|
+ if o.respond_to? :to_global_id
+ o.to_global_id
+ else
+ o.to_s
+ end
+ end.sort.join(":")
end
end
end