$gateway.open("target.server", 3306) do |port|
è più equivalente, in questo caso, a
ssh -L #{port}:target.server:3306 -N [email protected]
che potrebbe benissimo fallire se il tuo server mysql è in ascolto solo su 127.0.0.1 (o su un indirizzo IP interno, o protetto da firewall per consentire solo connessioni tramite reti interne, che sono tutte configurazioni ragionevoli e normali).
Probabilmente vuoi:
$gateway.open("127.0.0.1", 3306) do |port|
invece in questo caso.