有很多与此类似的问题都在谈论将 rails 插件作为解决方案 - 但我没有使用 rails,请继续阅读以了解更多信息
我在一个 sinatra 项目中有一个 Rakefile,它允许我rake db:migrate
. 它会完美地完成我的迁移,但我想传递一个标志(或编写一个新的 rake 任务),它做同样的事情,但将 SQL 输出到 STDOUT 并且不会将更改提交到数据库。有谁知道如何做到这一点?
我的第一个想法是尝试 ActiveRecord 日志记录,看看我是否可以得到 SQL,但这不起作用!有任何想法吗?
namespace :db do
task :migrate_sql do
require 'logger'
ActiveRecord::Base.logger = Logger.new(STDOUT)
Rake::Task['db:migrate'].invoke
# This does the migration and doesn't output SQL - so no good!
end
end