是否可以在rake任务上记录sql查询?

mbd*_*dev 14 ruby-on-rails

类似于打印每个执行的sql查询的'rails server',我想对rake任务执行相同的操作.

实现这一目标的最佳方法是什么?

sim*_*rmy 17

根据您的环境,Rake将记录SQL查询,就像任何Rails进程将在同一个日志文件中一样.所以在你的开发箱上,检查你的log/development.log文件 - 它将包含你的Rake任务的查询.如果要在生产中记录查询,请将Rake任务中的日志级别设置为DEBUG,并确保rake任务取决于:environment.

desc "Task with SQL logging"
task :test_log => :environment do
  Rails.logger.level = Logger::DEBUG
  Your code here...
end
Run Code Online (Sandbox Code Playgroud)

  • 啊,我看到他们在开发.log,谢谢 (4认同)

Dan*_*hka 15

正确的答案是将其放在 rake 任务的开头:

ActiveRecord::Base.logger = Logger.new STDOUT
Run Code Online (Sandbox Code Playgroud)


drh*_*ner 5

rake db:migrate  --trace
Run Code Online (Sandbox Code Playgroud)

--trace将显示详细信息