Откройте соединение с БД mysql в грабли - PullRequest
3 голосов
/ 30 марта 2012

У меня есть приложение Rails 3.2, которое использует PostgreSQL для хранения всей информации.

Но в одной задаче Rake мне нужно установить соединение с сервером MySQL. Я пытался сделать это:

ActiveRecord::Base.establish_connection(
    :adapter  => "mysql2",
    :database => "foo",
    :user => "root", 
    :password => "",
)

Но он просто заменит мое соединение PostgreSQL по умолчанию с этим временным MySQL.

Как сделать дополнительное соединение для экземпляра?

Ответы [ 2 ]

5 голосов
/ 31 марта 2012

Я нашел очень простое решение: драгоценный камень vanila mysql2 (https://github.com/brianmario/mysql2)

Теперь мой код выглядит так:

client = Mysql2::Client.new(:host => "localhost", :username => "root", :database => "foobar", :password => "")
users = client.query("SELECT * FROM users")

После этого у меня есть массив результатов.

2 голосов
/ 31 марта 2012

Не устанавливайте его в ActiveRecord :: Base.

Estab_connection подключается к базе данных из класса, как вы обнаружили, поэтому, когда вы делаете это в AR: Base, каждый подкласс этого (к тому же, для всей базы данных установлено соединение, заменяющее текущее.

По сути, вы создаете класс для каждой из таблиц, к которым хотите подключиться, и вызываете метод установления соединения в этих,Если вы хотите сделать это в нескольких таблицах, создайте модуль с ним и включите его.

class MyCustomClass < ActiveRecord::Base
  establish_connection(
   :adapter  => "mysql2",
   :database => "foo",
   :user => "root", 
   :password => "",
  )
end

MyCustomClass.find(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...