Class: Migratrix::Migratrix

Inherits:
Object show all
Includes:
Loggable
Defined in:
lib/migratrix/migratrix.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMigratrix

Returns a new instance of Migratrix.



7
8
# File 'lib/migratrix/migratrix.rb', line 7

def initialize
end

Class Method Details

.create_logger(stream) ⇒ Object


Logger singleton; tries to hook into Rails.logger if it exists (it won’t if you log anything during startup because Migratrix is loaded before Rails). To fix this, after rails start up call Migratrix::Migratrix.logger = Rails.logger



15
16
17
18
19
20
21
# File 'lib/migratrix/migratrix.rb', line 15

def self.create_logger(stream)
  logger = Logger.new(stream)
  logger.formatter = proc { |severity, datetime, progname, msg|
    "#{severity[0]} #{datetime.strftime('%F %H:%M:%S')}: #{msg}\n"
  }
  logger
end

.extraction(class_name, extraction_name, options = {}) ⇒ Object



59
60
61
# File 'lib/migratrix/migratrix.rb', line 59

def self.extraction(class_name, extraction_name, options={})
  self.extractions.class_for(class_name).new(extraction_name, options)
end

.extractionsObject


extractions



51
52
53
# File 'lib/migratrix/migratrix.rb', line 51

def self.extractions
  registry[:extractions]
end

.init_loggerObject



27
28
29
30
# File 'lib/migratrix/migratrix.rb', line 27

def self.init_logger
  return Rails.logger if Rails.logger
  @logger = create_logger($stdout)
end

.load(load_name, class_name, options = {}) ⇒ Object



89
90
91
# File 'lib/migratrix/migratrix.rb', line 89

def self.load(load_name, class_name, options={})
  self.loads.class_for(class_name).new(load_name, options)
end

.loadsObject


loads



81
82
83
# File 'lib/migratrix/migratrix.rb', line 81

def self.loads
  registry[:loads]
end

.log_to(stream) ⇒ Object



23
24
25
# File 'lib/migratrix/migratrix.rb', line 23

def self.log_to(stream)
  self.logger = self.create_logger(stream)
end

.loggerObject



32
33
34
# File 'lib/migratrix/migratrix.rb', line 32

def self.logger
  @logger ||= self.init_logger
end

.logger=(new_logger) ⇒ Object



36
37
38
# File 'lib/migratrix/migratrix.rb', line 36

def self.logger=(new_logger)
  @logger = new_logger
end

.register_extraction(class_name, klass, options = {}) ⇒ Object



55
56
57
# File 'lib/migratrix/migratrix.rb', line 55

def self.register_extraction(class_name, klass, options={})
  self.extractions.register(class_name, klass, options)
end

.register_load(name, klass, options = {}) ⇒ Object



85
86
87
# File 'lib/migratrix/migratrix.rb', line 85

def self.register_load(name, klass, options={})
  self.loads.register(name, klass, options)
end

.register_transform(name, klass, options = {}) ⇒ Object



70
71
72
# File 'lib/migratrix/migratrix.rb', line 70

def self.register_transform(name, klass, options={})
  self.transforms.register(name, klass, options)
end

.registryObject


Candidate for exract class? MigrationRegistry?



45
46
47
# File 'lib/migratrix/migratrix.rb', line 45

def self.registry
  @registry ||= Hash[[:extractions,:loads,:migrations,:transforms].map {|key| [key, Registry.new]}]
end

.transform(transform_name, class_name, options = {}) ⇒ Object



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

def self.transform(transform_name, class_name, options={})
  self.transforms.class_for(class_name).new(transform_name, options)
end

.transformsObject


transforms



66
67
68
# File 'lib/migratrix/migratrix.rb', line 66

def self.transforms
  registry[:transforms]
end