Renamed helpers to correspond to renamed Controller classes.
[merb_radiant.git] / lib / radiant / .svn / text-base / extension_migrator.rb.svn-base
blobaf94ff986cf4334d106b3bd82db0b53d88a686ce
1 module Radiant
2   class ExtensionMigrator < ActiveRecord::Migrator
3   
4     def self.migrate_extensions
5       Extension.descendants.each do |ext|
6         ext.migrator.migrate
7       end
8     end
9   
10     def initialize(extension)
11       @extension = extension
12       @migrations_path = @extension.root + '/db/migrate'
13     end
14   
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?
17     
18       if [:up, :down].include?(how)
19         @direction = how
20         @target_version = nil
21       else
22         @target_version = how
23         case
24           when @target_version.nil?, current_version < @target_version
25             @direction = :up
26           when current_version > @target_version
27             @direction = :down
28           when current_version == @target_version
29             return # You're on the right version
30         end
31       end
32     
33       migrate_without_extension_support
34     end
35     alias_method_chain :migrate, :extension_support
36     
37     def current_version
38       @extension.meta.schema_version
39     end
40   
41     def set_schema_version(version)
42       @extension.meta.update_attributes(:schema_version => (down? ? version.to_i - 1 : version.to_i))
43     end
44   
45   end
47 end