Я работаю над небольшой программой на Ruby, которая будет подключаться к удаленной базе данных MySQL Bugzilla, выполнять запрос записей и отправлять данные об этих записях группе на ежедневной основе.
До сих пор я мог подключиться к серверу db по SSH и выполнить команду с помощью net-ssh. Вот пример:
require 'net/ssh'
Net::SSH.start("db.example.com", "sroach", :password => "secret") do |ssh|
result = ssh.exec!("ls -l")
puts result
end
Это просто отлично.
Используя ActiveRecord 3.0.3, я хотел протестировать метод establish_connection
, поэтому я установил соединение с моей локальной базой данных MySQL и смог выполнять команды с помощью ActiveRecord. Пример:
require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => "mysql2",
:host => "localhost",
:database => "list_tool_development",
:username => "my_username",
:password => "secretpassword"
)
class MailingList < ActiveRecord::Base
end
MailingList.first #=> Successfully retrieves first record from the table
Итак, где у меня проблемы, так это собрать все это воедино и применить к моей удаленной базе данных MySQL. Вот моя лучшая попытка:
require 'net/ssh'
Net::SSH.start("db.example.com", "sroach", :password => "secret") do |ssh|
ssh.forward.local(3307, "127.0.0.1", 3306)
ssh.loop { true }
end
Но все, что это делает, - это зависает мой сеанс IRB (что может быть совершенно нормальным ... не знаю). Если зависание было нормальным, я открыл новый сеанс IRB и попытался установить соединение с удаленной базой данных следующим образом:
require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => "mysql2",
:host => "127.0.0.1",
:port => 3307,
:reconnect => false,
:database => "bugs",
:pool => 5,
:username => "my_username",
:password => "secret",
:socket => "/tmp/mysql.sock"
)
class Bug < ActiveRecord::Base #=> the table name in the "bugs" db is "bugs"
end #=> so I made the model singular
Bug.first #=> the IRB session hangs at this point
Итак, я понятия не имею, что происходит не так и как его очистить. Любые предложения были бы полезны.
Я использую Mac OSX. База данных, к которой я пытаюсь подключиться, находится на FreeBSD 7.0 и MySQL версии Ver 14.12 Distrib 5.0.67.