class AttributeStats::GenerateMigration

Public Class Methods

new(table_info: [], options: {}) click to toggle source
# File lib/migration_generator/generate_migration.rb, line 3
def initialize(table_info: [], options: {})
  @table_info, @options = table_info, options
end

Public Instance Methods

output_migration() click to toggle source
# File lib/migration_generator/generate_migration.rb, line 7
def output_migration
  return nil if migration_template.blank?
  File.open(migration_file_path, 'w') do |f|
    f.write(migration_template)
  end
  migration_file_path
end

Private Instance Methods

base_path() click to toggle source

End Railties methods

# File lib/migration_generator/generate_migration.rb, line 58
def base_path
  Rails.root.join('db', 'migrate')
end
current_migration_number() click to toggle source
# File lib/migration_generator/generate_migration.rb, line 47
def current_migration_number
  existing_migration_lookup.collect do |file|
    File.basename(file).split("_").first.to_i
  end.max.to_i
end
existing_migration_lookup() click to toggle source
# File lib/migration_generator/generate_migration.rb, line 53
def existing_migration_lookup
  Dir.glob("#{base_path}/[0-9]*_*.rb")
end
find_migration_class_suffix() click to toggle source
# File lib/migration_generator/generate_migration.rb, line 31
def find_migration_class_suffix
  existing_migration_suffix = Dir.glob("#{base_path}/[0-9]*_remove_unused_attributes_*.rb").map do |fn|
    next unless match = fn.match(/(\d+).rb/)
    match[1].to_i
  end.compact.max
  existing_migration_suffix ||= 0
  existing_migration_suffix + 1
end
migration_class_suffix() click to toggle source
# File lib/migration_generator/generate_migration.rb, line 27
def migration_class_suffix
  @migration_class_suffix ||= find_migration_class_suffix
end
migration_file_path() click to toggle source
# File lib/migration_generator/generate_migration.rb, line 17
def migration_file_path
  "#{base_path}/#{next_migration_number}_remove_unused_attributes_#{migration_class_suffix}.rb"
end
migration_template() click to toggle source
# File lib/migration_generator/generate_migration.rb, line 21
def migration_template
  MigrationTemplateContents.new(
    table_info: @table_info, migration_class_suffix: migration_class_suffix
  ).content
end
next_migration_number() click to toggle source

The following methods are extracted from Railties railties/lib/rails/generators/migration.rb

# File lib/migration_generator/generate_migration.rb, line 42
def next_migration_number
  next_migration_number = current_migration_number + 1
  ActiveRecord::Migration.next_migration_number(next_migration_number)
end