#!/usr/bin/env ruby
require 'rubygems'
require 'mysql'
require 'net/ssh/gateway'
require 'sequel'


HOST      = '54.222.195.145'
SSH_USER  = 'admin'
DB_HOST   = "stage-mysql-27.cdendvrkytps.rds.cn-north-1.amazonaws.com.cn"




gateway = Net::SSH::Gateway.new(HOST, SSH_USER, :keys => [ 
"~/.ssh/infra_stage-id_rsa" ],)
port = gateway.open(DB_HOST,3306,3306)


  child = fork do
    db = Sequel.connect(:adapter => 'mysql', :host => '127.0.0.1',:port => 
port, :user => 'root', :password => 'tMq2OhtrF3afh1FL', :database => 
'wechat_db')
    puts db['select id from lead'].count
  end
  puts "child: #{child}"
Process.wait
gateway.close(port)



I can set up a connection with mysql using the code above , and print the 
number of `lead` table records. 
when i use the following code directly
    db = Sequel.connect(:adapter => 'mysql', :host => '127.0.0.1',:port => 
port, :user => 'root', :password => 'tMq2OhtrF3afh1FL', :database => 
'wechat_db')
    puts db['select id from lead'].count


the program is hanging up.

is there a way to connect remote mysql using sequel via ssh without fork a 
child process, because i want to retrieve `db` object, so i can continue to 
do it using this object,
but now the fork block only seems to return a `child` process number.

i can realise the same feature with mysql2, but the api for sequel seems to 
be more elegant.  i want to use sequel gem.


require 'rubygems'
require 'mysql2'
require 'net/ssh/gateway'


ssh_gate = Net::SSH::Gateway.new(
  '54.222.195.145',
  'admin',
  :keys => [ "~/.ssh/infra_stage-id_rsa" ],
 )


puts 'true' if ssh_gate.active?


ssh_gate.open('stage-mysql-27.cdendvrkytps.rds.cn-north-1.amazonaws.com.cn', 
3306, 3306)


client = Mysql2::Client.new(
  host: "127.0.0.1",
  username: 'root',
  password: 'tMq2OhtrF3afh1FL',
  database: 'wechat_db',
  port: 3306
)
results = client.query("SELECT * FROM lead")
results.each do |row|
  p row
end
client.close


Thanks
Tim

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to