Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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
You can’t perform that action at this time.