Recentemente eu estava construindo uma ferramenta CLI para fazer alguma manutenção de dados, e embora a ferramenta fosse desenvolvida em Ruby, o servidor em questão não a tinha instalado. Portanto, tive que me conectar ao banco de dados remoto por meio de um túnel SSH. Veja como eu fiz o ActiveRecord se conectar ao banco de dados remoto via SSH, apenas no caso de alguém achar útil
require 'net/ssh/gateway'
require 'active_record'
#Â there is no password here as the local user `user` has an SSH key stored on the remote server
gateway = Net::SSH::Gateway.new('domain.tld', 'user')
port = gateway.open('127.0.0.1', 3306, 3307)
ActiveRecord::Base.establish_connection(
adapter: 'mysql2',
host: '127.0.0.1',
username: 'dbuser',
password: 'dbpassword',
database: 'dbname',
port: port
)
Uma vez que esta conexão seja estabelecida, os modelos normais que estendem ActiveRecord :: Base podem acessar o banco de dados como se fosse local.