1

RailsアプリケーションのSequelから現在のデータベースオブジェクトを取得する必要があります。「 RubySequelモジュールのトランザクション:DBオブジェクトを取得する方法」でアドバイスされているように、さまざまな理由で定義できません。私のデータベースはdatabase.ymlで定義されたJDBCを使用しています。

取得することはDatabase.currentできますが、別のアプリでSequel用に定義されたDBオブジェクトで実行できるように、ロガーを追加するなどの操作を実行できないようです。

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

これを実行Database.currentするDatabase.current()と、「そのようなメソッドはありません」という例外が発生するため、Sequelで使用される実際のDBオブジェクトを取得する必要があります。

4

1 に答える 1

3

これを行う方法を覚えるのに少し時間がかかりました、そして、私はそれがRailsで動作することを完全に確信しているわけではありませんが...

おそらくRailsで起こることである、Sequelでモデルを使用する場合、「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 に答える