Using a Database through an SSH Tunnel in a Rails Environment
If you want to use your local machine to inspect a remote database over SSH, you can add it as an environment in rails to let you run your app locally off of the remote DB (and do rails console
):
config/environments/remote.rb
:
import 'net/ssh/gateway'
module RemoteConnectionManager
SSH_USER = 'myuser'
def self.port_through_tunnel(remote_host, port)
return Net::SSH:Gateway.new(remote_host, SSH_USER)
.open(port)
end
end
database.yml
:
production: &prod
host: 'prod.mysite.com'
port: 5432
...
remote:
<<: *prod
host: 127.0.0.1
port: <%= RemoteConnectionManager.port_through_tunnel('prod.mysite.com', 5432) %>
Written by Nick Jacob
Related protips
3 Responses
import 'net/ssh/gateway' should probably be require 'net/ssh'.. and net-ssh has to be in Gemfile..
But still I get this after running "rails console remote":
(erb):29:in <main>': Cannot load
Rails.application.database_configuration`:
uninitialized constant RemoteConnectionManager (NameError)
over 1 year ago
·
Same problem. Needs to be
Net::SSH::Gateway
over 1 year ago
·
This used to work beautifully - until I upgrade to MacOS Ventura today. Has anyone got it working on there ?
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Rails
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#