Mercurial > hg > soundsoftware-site
comparison .svn/pristine/df/df905b0644ccdf0c1abfa3eb8cd4085be481962e.svn-base @ 909:cbb26bc654de redmine-1.3
Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author | Chris Cannam |
---|---|
date | Fri, 24 Feb 2012 19:09:32 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
908:c6c2cbd0afee | 909:cbb26bc654de |
---|---|
1 # The Plugin::Migrator class contains the logic to run migrations from | |
2 # within plugin directories. The directory in which a plugin's migrations | |
3 # should be is determined by the Plugin#migration_directory method. | |
4 # | |
5 # To migrate a plugin, you can simple call the migrate method (Plugin#migrate) | |
6 # with the version number that plugin should be at. The plugin's migrations | |
7 # will then be used to migrate up (or down) to the given version. | |
8 # | |
9 # For more information, see Engines::RailsExtensions::Migrations | |
10 class Engines::Plugin::Migrator < ActiveRecord::Migrator | |
11 | |
12 # We need to be able to set the 'current' engine being migrated. | |
13 cattr_accessor :current_plugin | |
14 | |
15 class << self | |
16 # Runs the migrations from a plugin, up (or down) to the version given | |
17 def migrate_plugin(plugin, version) | |
18 self.current_plugin = plugin | |
19 return if current_version(plugin) == version | |
20 migrate(plugin.migration_directory, version) | |
21 end | |
22 | |
23 def current_version(plugin=current_plugin) | |
24 # Delete migrations that don't match .. to_i will work because the number comes first | |
25 ::ActiveRecord::Base.connection.select_values( | |
26 "SELECT version FROM #{schema_migrations_table_name}" | |
27 ).delete_if{ |v| v.match(/-#{plugin.name}/) == nil }.map(&:to_i).max || 0 | |
28 end | |
29 end | |
30 | |
31 def migrated | |
32 sm_table = self.class.schema_migrations_table_name | |
33 ::ActiveRecord::Base.connection.select_values( | |
34 "SELECT version FROM #{sm_table}" | |
35 ).delete_if{ |v| v.match(/-#{current_plugin.name}/) == nil }.map(&:to_i).sort | |
36 end | |
37 | |
38 def record_version_state_after_migrating(version) | |
39 super(version.to_s + "-" + current_plugin.name) | |
40 end | |
41 end |