あなたがそのような方法を持っているとしましょう:
def log_yield(sql, args=nil)
sql = "#{sql}; #{args.inspect}" if args
t0 = Time.now
begin
yield
rescue => e
log_exception(e, sql)
raise
ensure
t1 = Time.now
log_duration(Integer((t1-t0)*1000), sql) unless e
end
end
このメソッドをオーバーライドして同様の方法で実装する必要がありますが、によって返されるブロックを取得する必要がありますyield
。
(具体的には、Sequel :: Databaseで特定のSQLを生成したブロックを特定する必要があります)