class Pineapples::Actions::Rails::CopyMigration

Attributes

migration_name[R]

Public Class Methods

new(generator, migration_name, options) click to toggle source
Calls superclass method Pineapples::Actions::CopyFile::new
# File lib/pineapples/actions/rails/copy_migration.rb, line 22
def initialize(generator, migration_name, options)
  @generator = generator
  @migration_name = File.basename(migration_name, File.extname(migration_name))

  set_source_for_migration!
  @target = target_for_migration

  super(generator, @source, @target, options)
end
time() click to toggle source
# File lib/pineapples/actions/rails/copy_migration.rb, line 14
def self.time
  @time ||= Time.now
end
time=(value) click to toggle source
# File lib/pineapples/actions/rails/copy_migration.rb, line 18
def self.time=(value)
  @time = value
end

Public Instance Methods

invoke!() click to toggle source
Calls superclass method Pineapples::Actions::CopyFile#invoke!
# File lib/pineapples/actions/rails/copy_migration.rb, line 32
def invoke!
  super
  self.class.time = self.class.time + 2
end

Private Instance Methods

migration_timestamp() click to toggle source
# File lib/pineapples/actions/rails/copy_migration.rb, line 60
def migration_timestamp
  self.class.time.strftime('%Y%m%d%H%M%S')
end
relative_migration_dir() click to toggle source
# File lib/pineapples/actions/rails/copy_migration.rb, line 56
def relative_migration_dir
  'db/migrate'
end
set_source_for_migration!() click to toggle source
# File lib/pineapples/actions/rails/copy_migration.rb, line 39
def set_source_for_migration!
  sources = generator.source_paths_for_search

  sources.each do |source_path|
    migration_dir = File.join(source_path, relative_migration_dir)
    Dir.glob("#{migration_dir}/*.rb").each do |filename|
      @source = filename if filename.include?(migration_name)
    end
  end

  raise ArgumentError, "Failed to find migration by name #{migration_name}" if @source.nil?
end
target_for_migration() click to toggle source
# File lib/pineapples/actions/rails/copy_migration.rb, line 52
def target_for_migration
  File.join(relative_migration_dir, "#{migration_timestamp}_#{migration_name}.rb")
end