Skip to content

Commit

Permalink
[Cable] Allow Redis 6+
Browse files Browse the repository at this point in the history
we rely on redis-client to talk to Redis.
redis-client only supports  Redis 6+.
  • Loading branch information
rsamoilov committed Feb 12, 2025
1 parent 2efa706 commit c69860f
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
7 changes: 4 additions & 3 deletions lib/rage/cable/adapters/redis.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
class Rage::Cable::Adapters::Redis < Rage::Cable::Adapters::Base
REDIS_STREAM_NAME = "rage:cable:messages"
DEFAULT_REDIS_OPTIONS = { reconnect_attempts: [0.05, 0.1, 0.5] }
REDIS_MIN_VERSION_SUPPORTED = Gem::Version.create(6)

def initialize(config)
@redis_stream = if (prefix = config.delete(:channel_prefix))
Expand All @@ -26,8 +27,8 @@ def initialize(config)
@server_uuid = SecureRandom.uuid

redis_version = get_redis_version
if redis_version < Gem::Version.create(5)
raise "Redis adapter only supports Redis 5+. Detected Redis version: #{redis_version}."
if redis_version < REDIS_MIN_VERSION_SUPPORTED
raise "Redis adapter only supports Redis 6+. Detected Redis version: #{redis_version}."
end

@trimming_strategy = redis_version < Gem::Version.create("6.2.0") ? :maxlen : :minid
Expand Down Expand Up @@ -73,7 +74,7 @@ def get_redis_version
rescue RedisClient::Error => e
puts "FATAL: Couldn't connect to Redis - all broadcasts will be limited to the current server."
puts e.backtrace.join("\n")
Gem::Version.create(5)
REDIS_MIN_VERSION_SUPPORTED

ensure
service_redis.close
Expand Down
4 changes: 2 additions & 2 deletions spec/cable/adapters/redis_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -98,13 +98,13 @@
end
end

context "with Redis < 5" do
context "with Redis < 6" do
before do
allow(mock_redis).to receive(:call).with("INFO").and_return("redis_version:4.0.0")
end

it "raises an error" do
expect { subject }.to raise_error("Redis adapter only supports Redis 5+. Detected Redis version: 4.0.0.")
expect { subject }.to raise_error("Redis adapter only supports Redis 6+. Detected Redis version: 4.0.0.")
end
end

Expand Down

0 comments on commit c69860f

Please sign in to comment.