The work done for #7 changed how we aliased #call by adding it to the singleton class of the instance instead of returning a lambda with the behavior (so it can accept blocks if needed).
This had some benefits, but also could introduce some unexpected behavior if the original class already responded to #call.
For instance, when using ActionCable.server (which acts as a singleton), it would shadow the #call used as a Rack server to listen to clients wanting to register a WebSocket.
This work ensures the developer doesn't introduce unexpected side effects when inverting third party library dependencies.
The work done for #7 changed how we aliased
#call
by adding it to the singleton class of the instance instead of returning a lambda with the behavior (so it can accept blocks if needed).This had some benefits, but also could introduce some unexpected behavior if the original class already responded to
#call
.For instance, when using
ActionCable.server
(which acts as a singleton), it would shadow the#call
used as a Rack server to listen to clients wanting to register a WebSocket.This work ensures the developer doesn't introduce unexpected side effects when inverting third party library dependencies.