From 792fe4b29ce76089672c0741370b10d03a7f076a Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Thu, 15 Jan 2015 23:49:01 +0530 Subject: Specify channel name as an attribute --- lib/action_cable/channel/base.rb | 2 ++ lib/action_cable/server.rb | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/action_cable/channel/base.rb b/lib/action_cable/channel/base.rb index e091d08c9c..fa284eccbc 100644 --- a/lib/action_cable/channel/base.rb +++ b/lib/action_cable/channel/base.rb @@ -9,6 +9,8 @@ module ActionCable attr_reader :params + class_attribute :channel_name + class << self def matches?(identifier) raise "Please implement #{name}#matches? method" diff --git a/lib/action_cable/server.rb b/lib/action_cable/server.rb index 4ee6b15982..1b444a4e7a 100644 --- a/lib/action_cable/server.rb +++ b/lib/action_cable/server.rb @@ -47,8 +47,12 @@ module ActionCable id_key = data['identifier'] id_options = ActiveSupport::JSON.decode(id_key).with_indifferent_access - if subscription = registered_channels.detect { |channel_klass| channel_klass.matches?(id_options) } - @subscriptions[id_key] = subscription.new(self, id_key, id_options) + subscription_klass = registered_channels.detect do |channel_klass| + channel_klass.channel_name == id_options[:channel] && channel_klass.matches?(id_options) + end + + if subscription_klass + @subscriptions[id_key] = subscription_klass.new(self, id_key, id_options) @subscriptions[id_key].subscribe else # No channel found -- cgit v1.2.3