Class: Reactor::Migration

Inherits:
Object
  • Object
show all
Defined in:
lib/reactor/migration.rb

Constant Summary collapse

METHODS =
{
  create_obj: Plans::CreateObj,
  delete_obj: Plans::DeleteObj,
  update_obj: Plans::UpdateObj,
  create_class: Plans::CreateObjClass,
  delete_class: Plans::DeleteObjClass,
  update_class: Plans::UpdateObjClass,
  rename_class: Plans::RenameObjClass,
  create_attribute: Plans::CreateAttribute,
  delete_attribute: Plans::DeleteAttribute,
  update_attribute: Plans::UpdateAttribute,
  create_attribute_group: Plans::CreateAttributeGroup,
  delete_attribute_group: Plans::DeleteAttributeGroup,
  update_attribute_group: Plans::UpdateAttributeGroup,
  create_group: Plans::CreateGroup,
  delete_group: Plans::DeleteGroup,
  update_group: Plans::UpdateGroup,
  rename_group: Plans::RenameGroup,
  create_channel: Plans::CreateChannel,
  delete_channel: Plans::DeleteChannel,
  create_job: Plans::CreateJob,
  delete_job: Plans::DeleteJob,
  update_job: Plans::UpdateJob
}.freeze

Class Method Summary collapse

Class Method Details

.containedObject



74
75
76
# File 'lib/reactor/migration.rb', line 74

def self.contained
  @contained || []
end

.contains(*args) ⇒ Object



66
67
68
69
70
71
72
# File 'lib/reactor/migration.rb', line 66

def self.contains(*args)
  @contained ||= []
  args.flatten.each do |arg|
    migration_num = arg.to_i.to_s
    @contained << migration_num
  end
end

.init(name, *args) ⇒ Object



78
79
80
# File 'lib/reactor/migration.rb', line 78

def self.init(name, *args)
  METHODS[name.to_sym].new(*args)
end

.method_missing(name, *args, &block) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'lib/reactor/migration.rb', line 51

def self.method_missing(name, *args, &block)
  if METHODS.key? name.to_sym
    instance = init(name, *args)
    plan(instance, &block)
    prepare(instance)
    migrate(instance)
  else
    super(name, *args, &block)
  end
end

.migrate(instance) ⇒ Object



90
91
92
# File 'lib/reactor/migration.rb', line 90

def self.migrate(instance)
  instance.migrate!
end

.plan(instance, &block) ⇒ Object



82
83
84
# File 'lib/reactor/migration.rb', line 82

def self.plan(instance, &block)
  instance.instance_eval(&block) if block_given?
end

.prepare(instance) ⇒ Object



86
87
88
# File 'lib/reactor/migration.rb', line 86

def self.prepare(instance)
  instance.prepare! if instance.respond_to? :prepare!
end

.respond_to?(name) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/reactor/migration.rb', line 62

def self.respond_to?(name)
  METHODS.key?(name.to_sym) || super(name)
end