diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2018-09-06 14:23:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-06 14:23:44 -0400 |
commit | 2de047dbeb88215e1b5b86c1154e7d0f3002f9ba (patch) | |
tree | 6246d954cd5e49a14e68865cc81806c0dc8d1625 | |
parent | 53be0132c3f66dd8510921215d940641bbfd9588 (diff) | |
parent | bcd11e07b5369b661e869631dc485fd5e3ce88a5 (diff) | |
download | rails-2de047dbeb88215e1b5b86c1154e7d0f3002f9ba.tar.gz rails-2de047dbeb88215e1b5b86c1154e7d0f3002f9ba.tar.bz2 rails-2de047dbeb88215e1b5b86c1154e7d0f3002f9ba.zip |
Merge pull request #33798 from got2be/actioncable-redis-client-name
ActionCable: add id option to redis adapter config
-rw-r--r-- | actioncable/CHANGELOG.md | 18 | ||||
-rw-r--r-- | actioncable/lib/action_cable/subscription_adapter/redis.rb | 3 | ||||
-rw-r--r-- | actioncable/test/subscription_adapter/redis_test.rb | 12 |
3 files changed, 30 insertions, 3 deletions
diff --git a/actioncable/CHANGELOG.md b/actioncable/CHANGELOG.md index 959943016f..17c7e9a3b7 100644 --- a/actioncable/CHANGELOG.md +++ b/actioncable/CHANGELOG.md @@ -1,3 +1,21 @@ +* Add `id` option to redis adapter so now you can distinguish + ActionCable's redis connections among others. Also, you can set + custom id in options. + + Before: + ``` + $ redis-cli client list + id=669 addr=127.0.0.1:46442 fd=8 name= age=18 ... + ``` + + After: + ``` + $ redis-cli client list + id=673 addr=127.0.0.1:46516 fd=8 name=ActionCable-PID-19413 age=2 ... + ``` + + *Ilia Kasianenko* + * Rails 6 requires Ruby 2.4.1 or newer. *Jeremy Daer* diff --git a/actioncable/lib/action_cable/subscription_adapter/redis.rb b/actioncable/lib/action_cable/subscription_adapter/redis.rb index c28951608f..ad8fa52760 100644 --- a/actioncable/lib/action_cable/subscription_adapter/redis.rb +++ b/actioncable/lib/action_cable/subscription_adapter/redis.rb @@ -13,7 +13,8 @@ module ActionCable # Overwrite this factory method for Redis connections if you want to use a different Redis library than the redis gem. # This is needed, for example, when using Makara proxies for distributed Redis. cattr_accessor :redis_connector, default: ->(config) do - ::Redis.new(config.slice(:url, :host, :port, :db, :password)) + config[:id] ||= "ActionCable-PID-#{$$}" + ::Redis.new(config.slice(:url, :host, :port, :db, :password, :id)) end def initialize(*) diff --git a/actioncable/test/subscription_adapter/redis_test.rb b/actioncable/test/subscription_adapter/redis_test.rb index 3dc995331a..7874bfcfa8 100644 --- a/actioncable/test/subscription_adapter/redis_test.rb +++ b/actioncable/test/subscription_adapter/redis_test.rb @@ -30,14 +30,22 @@ class RedisAdapterTest::AlternateConfiguration < RedisAdapterTest end class RedisAdapterTest::Connector < ActionCable::TestCase - test "slices url, host, port, db, and password from config" do - config = { url: 1, host: 2, port: 3, db: 4, password: 5 } + test "slices url, host, port, db, password and id from config" do + config = { url: 1, host: 2, port: 3, db: 4, password: 5, id: "Some custom ID" } assert_called_with ::Redis, :new, [ config ] do connect config.merge(other: "unrelated", stuff: "here") end end + test "adds default id if it is not specified" do + config = { url: 1, host: 2, port: 3, db: 4, password: 5, id: "ActionCable1-PID-#{$$}" } + + assert_called_with ::Redis, :new, [ config ] do + connect config + end + end + def connect(config) ActionCable::SubscriptionAdapter::Redis.redis_connector.call(config) end |