> Keeping the additional state `@listener_redis` is also a code smell.

Hmm, never heard of use of instance variables as a code smell.  I'd agree that maintaining extra mutable state is a code smell.  This isn't mutable (well, technically pretty much everything in ruby is mutable, but we don't mutate it internally or expose it to be mutated externally).

To me, `@listener_redis` is fundamentally a piece of state that the subscriber manages.  I value the `handle_message` being its own method.