lib/penthouse/migrator.rb in penthouse-0.8.0 vs lib/penthouse/migrator.rb in penthouse-0.9.0

- old
+ new

@@ -1,9 +1,7 @@ require 'active_record' -require 'set' require 'active_support/core_ext/module/aliasing' -require 'active_support/core_ext/array/wrap' module Penthouse module Migration def self.included(base) base.alias_method_chain :announce, :penthouse @@ -35,54 +33,79 @@ alias_method :migrate_with_octopus, :migrate_with_penthouse alias_method :up_with_octopus, :up_with_penthouse alias_method :down_with_octopus, :down_with_penthouse alias_method :run_with_octopus, :run_with_penthouse end + + alias_method_chain :migrate, :penthouse + alias_method_chain :migrations, :penthouse + + # override any new Octopus methods with the new Penthouse ones + alias_method :migrate_with_octopus, :migrate_with_penthouse + alias_method :migrations_with_octopus, :migrations_with_penthouse end end + # this may seem stupid but it gets around issues with Octopus + def migrate_with_penthouse(*args) + migrate_without_penthouse(*args) + end + + # this may seem stupid but it gets around issues with Octopus + def migrations_with_penthouse + migrations_without_penthouse + end + module ClassMethods def migrate_with_penthouse(migrations_paths, target_version = nil, &block) unless Penthouse.configuration.migrate_tenants? return migrate_without_penthouse(migrations_paths, target_version, &block) end - Penthouse.each_tenant(tenant_identifiers: tenants_to_migrate) do |tenant| + wrap_penthouse do migrate_without_penthouse(migrations_paths, target_version, &block) end end def up_with_penthouse(migrations_paths, target_version = nil, &block) unless Penthouse.configuration.migrate_tenants? return up_without_penthouse(migrations_paths, target_version, &block) end - Penthouse.each_tenant(tenant_identifiers: tenants_to_migrate) do |tenant| - up_without_penthouse(migrations_paths, target_version, &block) + wrap_penthouse do + up_without_penthouse(migrations_paths, target_version) end end def down_with_penthouse(migrations_paths, target_version = nil, &block) unless Penthouse.configuration.migrate_tenants? - return down_without_penthouse(migrations_paths, target_version, &block) + return down_without_penthouse(migrations_paths, target_version) end - Penthouse.each_tenant(tenant_identifiers: tenants_to_migrate) do |tenant| - down_without_penthouse(migrations_paths, target_version, &block) + wrap_penthouse do + down_without_penthouse(migrations_paths, target_version) end end def run_with_penthouse(direction, migrations_paths, target_version) unless Penthouse.configuration.migrate_tenants? return run_without_penthouse(direction, migrations_paths, target_version) end - Penthouse.each_tenant(tenant_identifiers: tenants_to_migrate) do |tenant| + wrap_penthouse do run_without_penthouse(direction, migrations_paths, target_version) end end private + + def wrap_penthouse(&block) + if Penthouse.tenant + block.yield + else + Penthouse.each_tenant(tenant_identifiers: tenants_to_migrate, &block) + end + end def tenants_to_migrate return @tenants_to_migrate if defined?(@tenants_to_migrate) @tenants_to_migrate = begin if !!(t = (ENV["TENANT"] || ENV["TENANTS"]))