代码之家  ›  专栏  ›  技术社区  ›  Blankman

是否可以输出“rake db:migrate”生成的SQL更改脚本?

  •  41
  • Blankman  · 技术社区  · 14 年前

    是否可以输出“rake db:migrate”生成的SQL更改脚本?

    4 回复  |  直到 6 年前
        1
  •  35
  •   the Tin Man    9 年前

    可以在中创建rake任务 lib/tasks/ :

    namespace :db do
      desc 'Make migration with output'
      task(:migrate_with_sql => :environment) do
        ActiveRecord::Base.logger = Logger.new(STDOUT)
        Rake::Task['db:migrate'].invoke
      end
    end
    

    然后打电话 rake db:migrate_with_sql 记录迁移。

        2
  •  75
  •   the Tin Man    9 年前

    在@qarol上构建,但更冷,将这个rake任务添加到rake文件中:

    task :log => :environment do
      ActiveRecord::Base.logger = Logger.new(STDOUT)
    end
    

    然后你可以打电话 任何 rake任务并记录输出:

    rake log db:migrate
    
        3
  •  9
  •   Raja    9 年前

    SQL输出捕获在环境日志文件中,例如development.log。

        4
  •  2
  •   Brian Durand    6 年前

    我把 capture_migration_sql 为此目的,宝石。它将把您的迁移SQL转储到 db/migration_sql .

    如果您只需要找到一个SQL语句,那就太过分了,但是如果您的生产过程需要原始的SQL语句,那就太好了。由于不需要Ruby->SQL mental Math,它还可以使在代码检查中查看复杂的数据库更改变得更加容易。