Sha256: acb2fcc1af40b5af25722090100d033212860f9514c6181c5139c2311534f1b2
Contents?: true
Size: 1.36 KB
Versions: 9
Compression:
Stored size: 1.36 KB
Contents
require 'pre-commit/checks/plugin' module PreCommit module Checks class Migration < Plugin def self.aliases [:migrations] end 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 def self.description "Detects rails database migrations and schema incompatibilities." end end end end
Version data entries
9 entries across 9 versions & 1 rubygems