lib/octopus/migration.rb in ar-octopus-0.9.2 vs lib/octopus/migration.rb in ar-octopus-0.10.0
- old
+ new
@@ -60,28 +60,30 @@
end
module Octopus
module Migrator
def self.included(base)
- base.extend(ClassMethods)
+ unless Octopus.atleast_rails52?
+ base.extend(ClassMethods)
- base.class_eval do
- class << self
- alias_method :migrate_without_octopus, :migrate
- alias_method :migrate, :migrate_with_octopus
+ 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 :up_without_octopus, :up
- alias_method :up, :up_with_octopus
+ alias_method :down_without_octopus, :down
+ alias_method :down, :down_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 :run_without_octopus, :run
- alias_method :run, :run_with_octopus
-
- alias_method :rollback_without_octopus, :rollback
- alias_method :rollback, :rollback_with_octopus
+ alias_method :rollback_without_octopus, :rollback
+ alias_method :rollback, :rollback_with_octopus
+ end
end
end
base.send :alias_method, :run_without_octopus, :run
base.send :alias_method, :run, :run_with_octopus
@@ -90,77 +92,116 @@
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
+ if Octopus.atleast_rails52?
+ ### Post RAILS 5.2 Migration methods
+
+ def run_with_octopus(&block)
+ return run_without_octopus(&block) unless connection.is_a?(Octopus::Proxy)
+ shards = migrations.map(&:shards).flatten.map(&:to_s)
+ connection.send_queries_to_multiple_shards(shards) do
+ run_without_octopus(&block)
+ end
+ rescue ActiveRecord::UnknownMigrationVersionError => e
+ raise unless migrations(true).detect { |m| m.version == e.version }
+ end
- def run_with_octopus(&block)
- run_without_octopus(&block)
- rescue ActiveRecord::UnknownMigrationVersionError => e
- raise unless migrations(true).detect { |m| m.version == e.version }
- end
+ def migrate_with_octopus(&block)
+ return migrate_without_octopus(&block) unless connection.is_a?(Octopus::Proxy)
+ shards = migrations.map(&:shards).flatten.map(&:to_s)
+ connection.send_queries_to_multiple_shards(shards) do
+ migrate_without_octopus(&block)
+ end
+ rescue ActiveRecord::UnknownMigrationVersionError => e
+ raise unless migrations(true).detect { |m| m.version == e.version }
+ end
- def migrate_with_octopus(&block)
- migrate_without_octopus(&block)
- rescue ActiveRecord::UnknownMigrationVersionError => e
- raise unless migrations(true).detect { |m| m.version == e.version }
- end
+ def migrations_with_octopus(shard_agnostic = true)
+ migrations = migrations_without_octopus
+ return migrations if !connection.is_a?(Octopus::Proxy) || shard_agnostic
- 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
+
+ private
+
+ def connection
+ ActiveRecord::Base.connection
+ end
+
+ else
+ ### Pre RAILS 5.2 Migration methods
+
+ def run_with_octopus(&block)
+ run_without_octopus(&block)
+ rescue ActiveRecord::UnknownMigrationVersionError => e
+ raise unless migrations(true).detect { |m| m.version == e.version }
+ end
- migrations.select { |m| m.shards.include?(connection.current_shard.to_sym) }
- end
+ def migrate_with_octopus(&block)
+ migrate_without_octopus(&block)
+ rescue ActiveRecord::UnknownMigrationVersionError => e
+ raise unless migrations(true).detect { |m| m.version == e.version }
+ end
- module ClassMethods
- def migrate_with_octopus(migrations_paths, target_version = nil, &block)
- return migrate_without_octopus(migrations_paths, target_version, &block) unless connection.is_a?(Octopus::Proxy)
+ 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
- connection.send_queries_to_multiple_shards(connection.shard_names) do
- migrate_without_octopus(migrations_paths, target_version, &block)
- end
+ migrations.select { |m| m.shards.include?(connection.current_shard.to_sym) }
end
- def up_with_octopus(migrations_paths, target_version = nil, &block)
- return up_without_octopus(migrations_paths, target_version, &block) unless connection.is_a?(Octopus::Proxy)
- return up_without_octopus(migrations_paths, target_version, &block) unless connection.current_shard.to_s == Octopus.master_shard.to_s
+ module ClassMethods
+ def migrate_with_octopus(migrations_paths, target_version = nil, &block)
+ return migrate_without_octopus(migrations_paths, target_version, &block) unless connection.is_a?(Octopus::Proxy)
- connection.send_queries_to_multiple_shards(connection.shard_names) do
- up_without_octopus(migrations_paths, target_version, &block)
+ connection.send_queries_to_multiple_shards(connection.shard_names) do
+ migrate_without_octopus(migrations_paths, target_version, &block)
+ end
end
- end
- def down_with_octopus(migrations_paths, target_version = nil, &block)
- return down_without_octopus(migrations_paths, target_version, &block) unless connection.is_a?(Octopus::Proxy)
- return down_without_octopus(migrations_paths, target_version, &block) unless connection.current_shard.to_s == Octopus.master_shard.to_s
+ def up_with_octopus(migrations_paths, target_version = nil, &block)
+ return up_without_octopus(migrations_paths, target_version, &block) unless connection.is_a?(Octopus::Proxy)
+ return up_without_octopus(migrations_paths, target_version, &block) unless connection.current_shard.to_s == Octopus.master_shard.to_s
- connection.send_queries_to_multiple_shards(connection.shard_names) do
- down_without_octopus(migrations_paths, target_version, &block)
+ connection.send_queries_to_multiple_shards(connection.shard_names) do
+ up_without_octopus(migrations_paths, target_version, &block)
+ end
end
- end
- def run_with_octopus(direction, migrations_paths, target_version)
- return run_without_octopus(direction, migrations_paths, target_version) unless connection.is_a?(Octopus::Proxy)
+ def down_with_octopus(migrations_paths, target_version = nil, &block)
+ return down_without_octopus(migrations_paths, target_version, &block) unless connection.is_a?(Octopus::Proxy)
+ return down_without_octopus(migrations_paths, target_version, &block) unless connection.current_shard.to_s == Octopus.master_shard.to_s
- connection.send_queries_to_multiple_shards(connection.shard_names) do
- run_without_octopus(direction, migrations_paths, target_version)
+ connection.send_queries_to_multiple_shards(connection.shard_names) do
+ down_without_octopus(migrations_paths, target_version, &block)
+ end
end
- end
- def rollback_with_octopus(migrations_paths, steps = 1)
- return rollback_without_octopus(migrations_paths, steps) unless connection.is_a?(Octopus::Proxy)
+ def run_with_octopus(direction, migrations_paths, target_version)
+ return run_without_octopus(direction, migrations_paths, target_version) unless connection.is_a?(Octopus::Proxy)
- connection.send_queries_to_multiple_shards(connection.shard_names) do
- rollback_without_octopus(migrations_paths, steps)
+ connection.send_queries_to_multiple_shards(connection.shard_names) do
+ run_without_octopus(direction, migrations_paths, target_version)
+ end
end
- end
- private
+ def rollback_with_octopus(migrations_paths, steps = 1)
+ return rollback_without_octopus(migrations_paths, steps) unless connection.is_a?(Octopus::Proxy)
- def connection
- ActiveRecord::Base.connection
+ connection.send_queries_to_multiple_shards(connection.shard_names) do
+ rollback_without_octopus(migrations_paths, steps)
+ end
+ end
+
+ private
+
+ def connection
+ ActiveRecord::Base.connection
+ end
end
end
end
end