2 class ExtensionMigrator < ActiveRecord::Migrator
4 def self.migrate_extensions
5 Extension.descendants.each do |ext|
10 def initialize(extension)
11 @extension = extension
12 @migrations_path = @extension.root + '/db/migrate'
15 def migrate_with_extension_support(how = :up)
16 raise StandardError.new("This database does not yet support migrations") unless ActiveRecord::Base.connection.supports_migrations?
18 if [:up, :down].include?(how)
24 when @target_version.nil?, current_version < @target_version
26 when current_version > @target_version
28 when current_version == @target_version
29 return # You're on the right version
33 migrate_without_extension_support
35 alias_method_chain :migrate, :extension_support
38 @extension.meta.schema_version
41 def set_schema_version(version)
42 @extension.meta.update_attributes(:schema_version => (down? ? version.to_i - 1 : version.to_i))