Defect #31116 » redmine-4.0.2.plugin-upgrade.patch
/usr/share/redmine/redmine-4.0.2/lib/redmine/plugin.rb 2019-04-17 17:35:44.815629390 +0200 | ||
---|---|---|
515 | 515 |
def open |
516 | 516 |
Migrator.new(:up, migrations, nil) |
517 | 517 |
end |
518 | ||
519 |
def set_current_plugin(p) |
|
520 |
@current_plugin = p |
|
521 |
end |
|
522 | ||
523 | ||
524 |
def get_all_versions(plugin = @current_plugin) |
|
525 |
# Delete migrations that don't match .. to_i will work because the number comes first |
|
526 |
@all_versions ||= {} |
|
527 |
@all_versions[plugin.id.to_s] ||= begin |
|
528 |
sm_table = ::ActiveRecord::SchemaMigration.table_name |
|
529 |
migration_versions = ActiveRecord::Base.connection.select_values("SELECT version FROM #{sm_table}") |
|
530 |
versions_by_plugins = migration_versions.group_by { |version| version.match(/-(.*)$/).try(:[], 1) } |
|
531 |
@all_versions = versions_by_plugins.transform_values! {|versions| versions.map!(&:to_i).sort! } |
|
532 |
@all_versions[plugin.id.to_s] || [] |
|
533 |
end |
|
534 |
end |
|
518 | 535 |
end |
519 | 536 | |
520 | 537 |
class Migrator < ActiveRecord::Migrator |
... | ... | |
527 | 544 |
self.current_plugin = plugin |
528 | 545 |
return if current_version(plugin) == version |
529 | 546 | |
530 |
MigrationContext.new(plugin.migration_directory).migrate(version) |
|
547 |
ctx = MigrationContext.new(plugin.migration_directory) |
|
548 |
ctx.set_current_plugin(plugin) |
|
549 |
ctx.migrate(version) |
|
531 | 550 |
end |
532 | 551 | |
533 | 552 |
def get_all_versions(plugin = current_plugin) |