Class: MigrationSignature::MigrationFile
- Inherits:
-
Object
- Object
- MigrationSignature::MigrationFile
- Defined in:
- lib/migration_signature/migration_file.rb
Constant Summary collapse
- MIGRATION_SIG_PREFIX =
'# migration_signature: '
Class Method Summary collapse
Instance Method Summary collapse
- #basename ⇒ Object
- #ignore? ⇒ Boolean
-
#initialize(path_or_version) ⇒ MigrationFile
constructor
A new instance of MigrationFile.
- #update_signature! ⇒ Object
- #validate_signature! ⇒ Object
Constructor Details
#initialize(path_or_version) ⇒ MigrationFile
Returns a new instance of MigrationFile.
22 23 24 |
# File 'lib/migration_signature/migration_file.rb', line 22 def initialize(path_or_version) @path = self.class.resolve_full_name(path_or_version) end |
Class Method Details
.resolve_full_name(path_or_version) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/migration_signature/migration_file.rb', line 7 def self.resolve_full_name(path_or_version) path = if path_or_version =~ /^\d+$/ Dir["#{MigrationSignature.config.migration_dir}/#{path_or_version}*"] .first else File.(path_or_version) end return path if path && File.exist?(path) bad_basename = path ? path.split('/').last : path_or_version raise("Could not find migration #{bad_basename}") end |
Instance Method Details
#basename ⇒ Object
53 54 55 |
# File 'lib/migration_signature/migration_file.rb', line 53 def basename File.basename(path) end |
#ignore? ⇒ Boolean
26 27 28 |
# File 'lib/migration_signature/migration_file.rb', line 26 def ignore? MigrationSignature.config.ignore?(@path) end |
#update_signature! ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/migration_signature/migration_file.rb', line 30 def update_signature! new_lines = lines.dup unless signature? new_lines.unshift("\n") # add blank line between magic comments and content if !new_lines[1].empty? && !new_lines[1].start_with?('#') new_lines.unshift("\n") end end new_lines[signature_line_number || 0] = new_source_signature_line write_to_file(new_lines) end |
#validate_signature! ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/migration_signature/migration_file.rb', line 44 def validate_signature! return true if valid_signature? raise MigrationSignature::InvalidSignatureError, 'Missing or invalid migration signature in migration: ' \ "#{basename}. Please re-run your migration to receive an " \ 'updated signature.' end |