$gateway.open("target.server", 3306) do |port|
är mer likvärdig med, i det här fallet,
ssh -L #{port}:target.server:3306 -N [email protected]
vilket mycket väl kan misslyckas om din mysql-server bara lyssnar på 127.0.0.1 (eller på en intern IP-adress, eller brandvägg för att endast tillåta anslutningar via interna nätverk, som alla är rimliga och normala konfigurationer).
Förmodligen vill du:
$gateway.open("127.0.0.1", 3306) do |port|
istället i det här fallet.