Добавьте это к вашей миграции:
def self.trace_execute(io=$stderr, &block)
set_trace_func proc {|event, file, line, id, binding, classname|
io.printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname if id.to_s == 'execute'
}
# trace the passed block
yield
ensure
# disable (note: the disable call is the last thing traced)
set_trace_func nil
end
Затем оберните ваш вызов выполнения в блок, подобный этому:
trace_execute { execute ('SELECT 1;') }
и вставьте первые несколько строк вывода трассировки.Я подозреваю, что что-то перехватывает вызов execute до того, как адаптер db сможет его получить.
Обычно я бы рекомендовал использовать что-то вроде
puts method(:execute).inspect
, но это, вероятно, не сработает в этом случае, потому чтоmethod_missing участвует.