lib/penthouse/migrator.rb in penthouse-0.5.0 vs lib/penthouse/migrator.rb in penthouse-0.6.0

- old
+ new

@@ -1,42 +1,56 @@ # shamelessly copied & adjusted from Apartment -# @see https://github.com/influitive/apartment/blob/development/lib/apartment/migrator.rb +# @see https://github.com/influitive/apartment/blob/master/lib/apartment/migrator.rb +# overrides Octopus's auto-switching to shards +# @see https://github.com/thiagopradi/octopus/blob/master/lib/octopus/migration.rb module Penthouse module Migrator extend self # Migrate to latest version # @param tenant_identifier [String, Symbol] the identifier for the tenant to switch to # @return [void] - def migrate(tenant_identifier) + def migrate(tenant_identifier, version) Penthouse.switch(tenant_identifier) do - version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil - - ActiveRecord::Migrator.migrate(ActiveRecord::Migrator.migrations_paths, version) do |migration| - ENV["SCOPE"].blank? || (ENV["SCOPE"] == migration.scope) + if migrator.respond_to?(:migrate_without_octopus) + migrator.migrate_without_octopus(migrator.migrations_paths, version) + else + migrator.migrate(migrator.migrations_paths, version) end end end # Migrate up/down to a specific version # @param tenant_identifier [String, Symbol] the identifier for the tenant to switch to # @param version [Integer] the version number to migrate up or down to # @return [void] def run(direction, tenant_identifier, version) Penthouse.switch(tenant_identifier) do - ActiveRecord::Migrator.run(direction, ActiveRecord::Migrator.migrations_paths, version) + if migrator.respond_to?(:run_without_octopus) + migrator.run_without_octopus(direction, migrator.migrations_paths, version) + else + migrator.run(direction, migrator.migrations_paths, version) + end end end # rollback latest migration `step` number of times # @param tenant_identifier [String, Symbol] the identifier for the tenant to switch to # @param step [Integer] how many migrations to rollback by # @return [void] def rollback(tenant_identifier, step = 1) Penthouse.switch(tenant_identifier) do - ActiveRecord::Migrator.rollback(ActiveRecord::Migrator.migrations_paths, step) + if migrator.respond_to?(:rollback_without_octopus) + migrator.rollback_without_octopus(migrator.migrations_paths, step) + else + migrator.rollback(migrator.migrations_paths, step) + end end + end + + def migrator + ActiveRecord::Migrator end end end