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