Как мне получить текущий объект базы данных в Sequel, работающий с Rails?

Мне нужно получить текущий объект базы данных из Sequel в приложении Rails. Я не могу определить его по разным причинам, как это рекомендуется в "Транзакции в модуле Ruby Sequel: как получить объект БД?". В моей базе данных используется JDBC, определенный в файле database.yml.

Я могу получить Database.current, но, похоже, я не могу выполнить с ним какую-либо операцию, например добавить регистратор, как я могу сделать с объектом БД, определенным для Sequel в другом приложении:

lger = Logger.new(STDOUT)
DB.sql_log_level = :debug
DB.loggers << lger

Выполнение этого на Database.current или Database.current() вызывает исключения «нет такого метода», поэтому мне нужно получить фактический объект БД, используемый Sequel.


person LetMeSOThat4U    schedule 18.02.2013    source источник


Ответы (1)


Мне потребовалось некоторое время, чтобы вспомнить, как это сделать, и я не совсем уверен, что это будет работать с Rails, но...

При использовании моделей с Sequel, что, вероятно, происходит с Rails, вы можете получить доступ к объекту «БД». У меня есть таблица под названием acls. Моя модель Acl. Когда я загружаю свои модели, я могу сделать:

require 'sequel'
require 'logger'

# ... make my connection then load my models ...

# turn on logging...
Acl.db.loggers << Loggers.new(STDOUT)
Acl.first 
# => I, [2013-02-18T16:55:13.561148 #94494]  INFO -- : (0.010879s) SELECT * FROM `acls` LIMIT 1

И это тоже работает:

Acl.db.sql_log_level = :debug
person the Tin Man    schedule 18.02.2013
comment
(будучи новичком в Sequel) Я обнаружил, что Sequel::Model.db также получает текущую базу данных. Но ваш пост подтолкнул меня в нужном направлении. Спасибо!!! - person LetMeSOThat4U; 19.02.2013