Sha256: 2b107ecb1f77bdfa18e68b0ab15c9d2d9a93162b250603cf9b7e2eaf35ca11c7

Contents?: true

Size: 1.68 KB

Versions: 1

Compression:

Stored size: 1.68 KB

Contents

module ActiveGraph::Generators::MigrationHelper
  extend ActiveSupport::Concern

  def base_migration_file_name(file_name, prefix = '')
    "#{prefix}#{file_name.parameterize}"
  end

  def migration_file_name(file_name, prefix = '')
    "#{Time.now.utc.strftime('%Y%m%d%H%M%S')}_#{base_migration_file_name(file_name, prefix)}.rb"
  end

  def migration_lookup_at(dirname)
    Dir.glob("#{dirname}/[0-9]*_*.rb")
  end

  # Stolen from https://github.com/rails/rails/blob/30767f980faa2d7a0531774ddf040471db74a23b/railties/lib/rails/generators/migration.rb#L20
  def existing_migration(dirname, file_name)
    migration_lookup_at(dirname).grep(/\d+_#{file_name}.rb$/).first
  end

  # :revoke happens when task is invoked with `rails destroy model ModelName`
  def migration_template(template_name, prefix = '')
    real_file_name = case @behavior
                     when :revoke
                       existing_migration(
                         'db/neo4j/migrate',
                         base_migration_file_name(file_name, prefix)
                       )
                     else
                       migration_file_name(file_name, prefix)
                     end

    # If running with :revoke and migration doesn't exist, real_file_name = nil
    return if !real_file_name

    @migration_class_name = file_name.camelize

    # template() method is still run on revoke but it doesn't generate anything
    # other than a consol message indicating the filepath.
    # (this appears to be behavior provided by rails)
    template template_name, File.join('db/neo4j/migrate', real_file_name)

    # On revoke, we need to manually remove the file
    FileUtils.rm(real_file_name) if @behavior == :revoke
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activegraph-11.5.0.alpha.1 lib/active_graph/generators/migration_helper.rb