Sha256: 4297804f7972330ddb04af60022bf03a6300afd460c9ef8a7799ad092cf2ba16

Contents?: true

Size: 1.27 KB

Versions: 11

Compression:

Stored size: 1.27 KB

Contents

module Radiant
  class ExtensionMigrator < ActiveRecord::Migrator
  
    def self.migrate_extensions
      Extension.descendants.each do |ext|
        ext.migrator.migrate
      end
    end
  
    def initialize(extension)
      @extension = extension
      @migrations_path = @extension.root + '/db/migrate'
    end
  
    def migrate_with_extension_support(how = :up)
      raise StandardError.new("This database does not yet support migrations") unless ActiveRecord::Base.connection.supports_migrations?
    
      if [:up, :down].include?(how)
        @direction = how
        @target_version = nil
      else
        @target_version = how
        case
          when @target_version.nil?, current_version < @target_version
            @direction = :up
          when current_version > @target_version
            @direction = :down
          when current_version == @target_version
            return # You're on the right version
        end
      end
    
      migrate_without_extension_support
    end
    alias_method_chain :migrate, :extension_support
    
    def current_version
      @extension.meta.schema_version
    end
  
    def set_schema_version(version)
      @extension.meta.update_attributes(:schema_version => (down? ? version.to_i - 1 : version.to_i))
    end
  
  end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
radiant-0.6.1 lib/radiant/extension_migrator.rb
radiant-0.6.0 lib/radiant/extension_migrator.rb
radiant-0.6.3 lib/radiant/extension_migrator.rb
radiant-0.6.2 lib/radiant/extension_migrator.rb
radiant-0.6.4 lib/radiant/extension_migrator.rb
radiant-0.6.5.1 lib/radiant/extension_migrator.rb
radiant-0.6.5 lib/radiant/extension_migrator.rb
radiant-0.6.6 lib/radiant/extension_migrator.rb
radiant-0.6.7 lib/radiant/extension_migrator.rb
radiant-0.6.8 lib/radiant/extension_migrator.rb
radiant-0.6.9 lib/radiant/extension_migrator.rb