Skip to content

Instantly share code, notes, and snippets.

@tiagoefmoraes
Created November 21, 2014 13:45
Show Gist options
  • Save tiagoefmoraes/370b1be7e39ebcb690ca to your computer and use it in GitHub Desktop.
Save tiagoefmoraes/370b1be7e39ebcb690ca to your computer and use it in GitHub Desktop.
Consolidate migrates
#!/bin/bash
set -e
schema_migrate="db/migrate/20141107164010_schema.rb"
echo Running current migrations...
rm db/migrate/*
git checkout db/migrate/
rm -f $schema_migrate
dropdb -U postgres bedel_test
createdb -U postgres bedel_test
rake db:migrate RAILS_ENV=test VERSION=20141107164010 > /dev/null
pg_dump -U postgres bedel_test > /tmp/before.sql
echo Finished current migrations
cp db/schema.rb $schema_migrate
sed -i -E "s/ActiveRecord::Schema\.define\(version: .*\) do/class Schema < ActiveRecord::Migration/" $schema_migrate
sed -i -E 's/ActiveRecord::Schema\.define(.*) do/class Schema < ActiveRecord::Migration; def up/' $schema_migrate
sed -i -E 's/^end$/end;end/' $schema_migrate
rm "$schema_migrate-E"
git add $schema_migrate
while true; do
echo Running new migrations...
for i in db/migrate/*; do
if [[ "db/migrate/20141107164011" > "$i" ]]; then
rm $i
fi
done
git checkout $schema_migrate
dropdb -U postgres bedel_test
createdb -U postgres bedel_test
rake db:migrate RAILS_ENV=test > /dev/null
pg_dump -U postgres bedel_test > /tmp/after.sql
diff /tmp/before.sql /tmp/after.sql || true
git checkout db/migrate/
printf "Run again? [Y,n]"
read rodar
if [ "$rodar" == "n" ]; then
echo "Canceled."
exit 1
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment