$gateway.open("target.server", 3306) do |port|
est plus équivalent à, dans ce cas,
ssh -L #{port}:target.server:3306 -N [email protected]
qui peut très bien échouer si votre serveur mysql n'écoute que sur 127.0.0.1 (ou sur une adresse IP interne, ou pare-feu pour autoriser uniquement les connexions via les réseaux internes, qui sont toutes des configurations raisonnables et normales).
Vous voulez probablement :
$gateway.open("127.0.0.1", 3306) do |port|
à la place dans ce cas.