Module: Octopus::Migrator

Defined in:
lib/octopus/migration.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/octopus/migration.rb', line 64

def self.included(base)
  base.extend(ClassMethods)

  base.class_eval do
    class << self
      alias_method :migrate_without_octopus, :migrate
      alias_method :migrate, :migrate_with_octopus

      alias_method :up_without_octopus, :up
      alias_method :up, :up_with_octopus

      alias_method :down_without_octopus, :down
      alias_method :down, :down_with_octopus

      alias_method :run_without_octopus, :run
      alias_method :run, :run_with_octopus

      alias_method :rollback_without_octopus, :rollback
      alias_method :rollback, :rollback_with_octopus
    end
  end

  base.send :alias_method, :run_without_octopus, :run
  base.send :alias_method, :run, :run_with_octopus

  base.send :alias_method, :migrate_without_octopus, :migrate
  base.send :alias_method, :migrate, :migrate_with_octopus

  base.send :alias_method, :migrations_without_octopus, :migrations
  base.send :alias_method, :migrations, :migrations_with_octopus
end

Instance Method Details

#migrate_with_octopus(&block) ⇒ Object



102
103
104
105
106
# File 'lib/octopus/migration.rb', line 102

def migrate_with_octopus(&block)
  migrate_without_octopus(&block)
rescue ActiveRecord::UnknownMigrationVersionError => e
  raise unless migrations(true).detect { |m| m.version == e.version }
end

#migrations_with_octopus(shard_agnostic = false) ⇒ Object



108
109
110
111
112
113
114
# File 'lib/octopus/migration.rb', line 108

def migrations_with_octopus(shard_agnostic = false)
  connection = ActiveRecord::Base.connection
  migrations = migrations_without_octopus
  return migrations if !connection.is_a?(Octopus::Proxy) || shard_agnostic

  migrations.select { |m| m.shards.include?(connection.current_shard.to_sym) }
end

#run_with_octopus(&block) ⇒ Object



96
97
98
99
100
# File 'lib/octopus/migration.rb', line 96

def run_with_octopus(&block)
  run_without_octopus(&block)
rescue ActiveRecord::UnknownMigrationVersionError => e
  raise unless migrations(true).detect { |m| m.version == e.version }
end