Sha256: 68065a1598bea012aa6472acd3e75d9f2c53dea435bd5cbe4afbda0b19b3d3f4
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 KB
Contents
module PreCommit class MigrationCheck class << self def call(staged_files) migration_files = migration_files(staged_files) schema_files = schema_files(staged_files) if migration_files.any? && schema_files.none? "It looks like you're adding a migration, but did not update the schema file" elsif migration_files.none? && schema_files.any? "You're trying to change the schema without adding a migration file" elsif migration_files.any? && schema_files.any? versions = migration_files.map { |f| f[/\d+/] } schema = schema_files.map { |f| File.read(f) }.join missing_versions = versions.select { |version| !schema.include?(version) } if missing_versions.any? "You did not add the schema versions for #{versions.join(', ')} to #{schema_files.join(' or ')}" end end end private def migration_files(staged_files) staged_files.grep(/db\/migrate\/.*\.rb/) end def schema_files(staged_files) staged_files.select { |f| File.basename(f) =~ /schema\.rb|structure.*\.sql/ } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pre-commit-0.11.0 | lib/pre-commit/checks/migration_check.rb |
pre-commit-0.10.0 | lib/pre-commit/checks/migration_check.rb |