DEV: Pass kwargs to the redis gem when calling methods/commands that we don't wrap (#14530)

This commit fixes the `eval` and `evalsha` commands/methods and any other methods that don't have a wrapper in `DiscourseRedis` and expect keyword arguments. I noticed this problem in Logster when I was trying to fetch some log messages in JSON format using the rails console and saw the messages were missing the `env` field. Logster uses the `eval` command to fetch messages `env`s:

dc351fd00f/lib/logster/redis_store.rb (L250-L253)

and that code was not fetching anything because `DiscourseRedis` didn't pass the `keys` keyword arg to the redis gem.
This commit is contained in:
Osama Sayegh
2021-10-06 17:42:04 +03:00
committed by GitHub
parent 14efd17b7b
commit d9d877fee7
2 changed files with 54 additions and 1 deletions

View File

@ -39,7 +39,7 @@ class DiscourseRedis
# prefix the key with the namespace
def method_missing(meth, *args, **kwargs, &block)
if @redis.respond_to?(meth)
DiscourseRedis.ignore_readonly { @redis.public_send(meth, *args, &block) }
DiscourseRedis.ignore_readonly { @redis.public_send(meth, *args, **kwargs, &block) }
else
super
end