Class: Layered::Assistant::Generators::MigrationsGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/layered/assistant/migrations_generator.rb

Instance Method Summary collapse

Instance Method Details

#copy_migrationsObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/generators/layered/assistant/migrations_generator.rb', line 7

def copy_migrations
  engine_migrations_path = Layered::Assistant::Engine.root.join("db/migrate")
  app_migrations_dir = "db/migrate"

  unless engine_migrations_path.exist?
    say "No migrations found in layered-assistant-rails.", :yellow
    return
  end

  app_migrations_path = File.join(destination_root, app_migrations_dir)
  existing_migrations = Dir[File.join(app_migrations_path, "*.rb")].map { |f| migration_name(File.basename(f)) }

  timestamp = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i

  Dir[engine_migrations_path.join("*.rb")].sort.each do |source|
    basename = File.basename(source)
    name = migration_name(basename)

    if existing_migrations.include?(name)
      say "  skip  #{name} (already exists)", :yellow
      next
    end

    content = "# This migration comes from layered_assistant (originally #{basename.split("_").first})\n" + File.read(source)

    create_file "#{app_migrations_dir}/#{timestamp}_#{name}.layered_assistant.rb", content
    timestamp += 1
  end
end