1 # FIXME Rails dependencies / use gem
4 class ExtensionMigrator < ActiveRecord::Migrator
6 def self.migrate_extensions
7 Extension.descendants.each do |ext|
12 def initialize(extension)
13 @extension = extension
14 @migrations_path = @extension.root + '/db/migrate'
17 def migrate_with_extension_support(how = :up)
18 raise StandardError.new("This database does not yet support migrations") unless ActiveRecord::Base.connection.supports_migrations?
20 if [:up, :down].include?(how)
26 when @target_version.nil?, current_version < @target_version
28 when current_version > @target_version
30 when current_version == @target_version
31 return # You're on the right version
35 migrate_without_extension_support
37 alias_method_chain :migrate, :extension_support
40 @extension.meta.schema_version
43 def set_schema_version(version)
44 @extension.meta.update_attributes(:schema_version => (down? ? version.to_i - 1 : version.to_i))