1

我需要在 Rails 应用程序中从 Sequel 获取当前数据库对象。由于各种原因,我无法定义它,就像“ Ruby Sequel 模块中的事务:如何获取 DB 对象? ”中建议的那样。我的数据库使用 database.yml 中定义的 JDBC。

我可以得到Database.current,但似乎我不能对它做任何操作,比如添加一个记录器,就像我可以在另一个应用程序中为 Sequel 定义的 DB 对象上做的那样:

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

这样做Database.currentDatabase.current()导致“没有这样的方法”异常,所以我需要获取 Sequel 使用的实际 DB 对象。

4

1 回答 1

3

我花了一段时间才记住如何做到这一点,而且,我并不完全肯定它会与 Rails 一起工作,但是......

当使用带有 Sequel 的模型时,这可能是 Rails 发生的情况,您可以获得“DB”对象。我有一张桌子叫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
于 2013-02-18T23:59:13.757 回答