diff --git a/.changesets/check-redis-client-version.md b/.changesets/check-redis-client-version.md new file mode 100644 index 000000000..baf4e22b0 --- /dev/null +++ b/.changesets/check-redis-client-version.md @@ -0,0 +1,6 @@ +--- +bump: "patch" +type: "fix" +--- + +Check the redis-client gem version before installing instrumentation. This prevents errors from being raised on redis-client gem versions older than 0.14.0. diff --git a/lib/appsignal/hooks/redis_client.rb b/lib/appsignal/hooks/redis_client.rb index e6c137f4e..2fb5d8520 100644 --- a/lib/appsignal/hooks/redis_client.rb +++ b/lib/appsignal/hooks/redis_client.rb @@ -8,6 +8,7 @@ class RedisClientHook < Appsignal::Hooks::Hook def dependencies_present? defined?(::RedisClient) && + Gem::Version.new(::RedisClient::VERSION) >= Gem::Version.new("0.14.0") && Appsignal.config && Appsignal.config[:instrument_redis] end diff --git a/spec/lib/appsignal/hooks/redis_client_spec.rb b/spec/lib/appsignal/hooks/redis_client_spec.rb index 65147679c..21693a953 100644 --- a/spec/lib/appsignal/hooks/redis_client_spec.rb +++ b/spec/lib/appsignal/hooks/redis_client_spec.rb @@ -4,12 +4,28 @@ end if DependencyHelper.redis_client_present? - context "with redis_client" do + context "with redis-client" do context "with instrumentation enabled" do describe "#dependencies_present?" do subject { described_class.new.dependencies_present? } - it { is_expected.to be_truthy } + context "with gem version new than 0.14.0" do + before { stub_const("RedisClient::VERSION", "1.2.3") } + + it { is_expected.to be_truthy } + end + + context "with gem version 0.14.0" do + before { stub_const("RedisClient::VERSION", "0.14.0") } + + it { is_expected.to be_truthy } + end + + context "with gem version older than 0.14.0" do + before { stub_const("RedisClient::VERSION", "0.13.9") } + + it { is_expected.to be_falsy } + end end context "with rest-client gem" do @@ -211,7 +227,7 @@ def write(_commands) end end else - context "without redis" do + context "without redis-client" do describe "#dependencies_present?" do subject { described_class.new.dependencies_present? }