是否有可能在耙式任务上记录sql查询?
答
根据您的环境,耙将记录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
答
echo '' > log/development.log
rake db:migrate:redo VERSION=20141017153933
cat log/development.log
答
我试过以上,无法得到它的工作。语法很好,没有错误,但没有SQL来到标准输出(或日志)。我正在使用rails 3.2。我也在生产环境中运行。
要看到我的rake任务生成的SQL查询,我曾经在http://eewang.github.io/blog/2013/07/29/how-to-use-rake-tasks-to-generate-migration-sql/
尤其是发现的技术,我刚插入此块在我的任务查找()之前生成的SQL查询我声明间谍在:
ActiveRecord::Base.connection.class.class_eval do
# alias the adapter's execute for later use
alias :old_execute :execute
# define our own execute
def execute(sql, name = nil)
print "===== #{sql}\n"
old_execute sql, name
end
end
然后,我可以看到标准输出上的SQL。这不是我的代码 - 尤金王提出了这种技术。
答
可能重复:is it possible to output the sql change scripts that rake db:migrate produces?
有一些不错的选择那里。我最喜欢的当然是我的答案。
啊,我看到他们在development.log,谢谢 – mbdev