From c121b44df419696cd44601468e36064c680356d9 Mon Sep 17 00:00:00 2001 From: mjattiot Date: Thu, 3 Nov 2022 03:14:51 +0100 Subject: [PATCH] fix: GCP Redis managed don't support redis client setname command (#4422) If using Redis on GCP, actionable will attempt to use the Redis client setname command. However, the command is not supported. So Introducing `REDIS_DISABLE_CLIENT_COMMAND` environment variable will let you solve this issue. ref: https://github.com/rails/rails/issues/38244#issuecomment-575454444 --- config/initializers/actioncable.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 config/initializers/actioncable.rb diff --git a/config/initializers/actioncable.rb b/config/initializers/actioncable.rb new file mode 100644 index 000000000..937ea83b8 --- /dev/null +++ b/config/initializers/actioncable.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'action_cable/subscription_adapter/redis' + +ActionCable::SubscriptionAdapter::Redis.redis_connector = lambda do |config| + # For supporting GCP Memorystore where `client` command is disabled. + # You can configure the following ENV variable to get your installation working. + # ref: + # https://github.com/mperham/sidekiq/issues/3518#issuecomment-595611673 + # https://github.com/redis/redis-rb/issues/767 + # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/75173 + # https://github.com/rails/rails/blob/4a23cb3415eac03d76623112576559a722d1f23d/actioncable/lib/action_cable/subscription_adapter/base.rb#L30 + config[:id] = nil if ENV['REDIS_DISABLE_CLIENT_COMMAND'].present? + ::Redis.new(config.except(:adapter, :channel_prefix)) +end