module Arborist::Migration::Data::ClassMethods

Attributes

model_ref[RW]

Public Instance Methods

data(*args, &migration) click to toggle source
# File lib/arborist/migration/data.rb, line 14
def data *args, &migration
  data_migration = DataMigration.new *args, &migration

  self.collection ||= Collection.new
  self.collection[data_migration.direction] << data_migration
end
model(*args) click to toggle source
# File lib/arborist/migration/data.rb, line 21
def model *args
  model_args = ModelArguments.new args
  define_model_reference model_args.model_ref
  define_model_method model_args
end

Private Instance Methods

config() click to toggle source
# File lib/arborist/migration/data.rb, line 49
def config
  Arborist.config.migration
end
define_model_method(model_args) click to toggle source
# File lib/arborist/migration/data.rb, line 29
def define_model_method model_args
  define_method model_args.method_name do
    @_ref ||= {}
    @_ref[model_args] ||= begin
      ref = self.class.model_ref.fetch model_args.model_ref

      if Arborist.config.migration.reset_column_information
        ref.tap(&:reset_column_information)
      end
    end
  end
end
define_model_reference(model_ref) click to toggle source
# File lib/arborist/migration/data.rb, line 42
def define_model_reference model_ref
  self.model_ref ||= {}
  self.model_ref[model_ref] ||= Object.const_get model_ref
rescue NameError
  config.fallback.new(model_ref).model
end