Created
September 16, 2011 20:28
-
-
Save bestie/1223064 to your computer and use it in GitHub Desktop.
Rails Git pre-commit hook for ensuring schema.rb and migration changes commit atomically
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# vim: set syntax=ruby | |
# Ensures that changes to the Rails schema.rb file may only be committed if a | |
# migration file is also committed at the same time. | |
def schema_modified? | |
%x[ git diff --cached |grep schema.rb ] == '' | |
end | |
def no_migrations_staged? | |
%x[ git diff --cached |grep 'db\/migrate\/20[0-9]*' ] == '' | |
end | |
# regex for typical migration | |
# db/migrate/20110901091759_remove_invalid_venue_phone_numbers.rb | |
# db\/migrate\/20[0-9]{12}_.*\.rb$ | |
# or | |
# db\/migrate\/20[0-9]* | |
# Warning may only work for like 100 years or something. | |
if schema_modified? && no_migrations_staged? | |
puts "Cannot commit modified schema.rb without any migrations." | |
exit 1 | |
end | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment