Skip to content

Instantly share code, notes, and snippets.

@xaviershay
Created August 14, 2015 21:21
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save xaviershay/2f2b69cbe070013669cb to your computer and use it in GitHub Desktop.
Save xaviershay/2f2b69cbe070013669cb to your computer and use it in GitHub Desktop.
Get SQL output from a Rails migration
#!/usr/bin/env ruby
require_relative 'config/environment'
path = ARGV.shift || raise("specify migration as first argument")
require_relative path
filename = File.basename(path, ".rb")
timestamp, name = filename.split("_", 2)
name = name.camelcase
ActiveRecord::Migration.verbose = false
module Wrapper
def execute(sql, *args)
if sql =~ /^ALTER\ TABLE|((CREATE|DROP) (TABLE|VIEW))|INSERT/i
puts sql.gsub(/`/, '') + ";"
else
super
end
end
end
ActiveRecord::Base.connection # Needed to load Mysql2Adapter
ActiveRecord::ConnectionAdapters::Mysql2Adapter.prepend(Wrapper)
migration = name.constantize
migration.migrate(:up)
ActiveRecord::SchemaMigration.create!(:version => timestamp.to_s)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment