小编jgo*_*les的帖子

无法使用ssh tunnel和activerecord连接到远程数据库

我在使用以下脚本时遇到了一些麻烦:

require 'rubygems'
require 'active_record'
require 'net/ssh/gateway'

gateway = Net::SSH::Gateway.new('myserver.com', 'myuser', :password => "mypass")
puts "true" if gateway.active?
p = gateway.open('127.0.0.1', 3306, 3307)

class MyClass < ActiveRecord::Base
  establish_connection(
    :adapter  => "mysql",
    :host     => "127.0.0.1",
    :username => "db_user",
    :password => "db_pass",
    :database => "mydb_production",
    :port     => 3307
  )
end

puts MyClass.all.size

gateway.shutdown!
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,它只是挂起,除非我删除activerecord查询.我知道我可以使用隧道连接,因为我可以从命令创建隧道,如下所示:

ssh -f myuser@myserver.com -L 3307/127.0.0.1/3306 -N
Run Code Online (Sandbox Code Playgroud)

如果我跑:

require 'rubygems'
require 'active_record'

class MyClass < ActiveRecord::Base
  establish_connection(
    :adapter  => "mysql",
    :host     => "127.0.0.1",
    :username => "db_user",
    :password => "db_pass", …
Run Code Online (Sandbox Code Playgroud)

ruby ssh activerecord ruby-on-rails

3
推荐指数
1
解决办法
4560
查看次数

标签 统计

activerecord ×1

ruby ×1

ruby-on-rails ×1

ssh ×1