redmine_plugins_helper 0.5.2 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 474a2a3d3fd82a0eeedd525edad8db6adaf84f1fda9785e910ffbe06046d8f47
4
- data.tar.gz: 309ff8226411dadced5b3639b0bff781c8d41ed307f2451ee865317ddc2d2e08
3
+ metadata.gz: dc58802ae88b2b9bdacd3f4e197e526b8ebe0143a8e2d6d269030ac8ac6d2541
4
+ data.tar.gz: a064c7cfb58df6f7a588c2d9f560896d32236f37c6438fcacb894035f547bc5f
5
5
  SHA512:
6
- metadata.gz: c1714ab95b6af124afe772dbb1e196323a655ef907cd83865ceb6088915a91176f0e739ad9e172909d4141b412ef4fb129e37219cb8278f2e0c2860303488ede
7
- data.tar.gz: 582161dbc0800d84c89a5ea5faa6a0f2620843123239337083878e44e92db8ad1fd406f2502cd08d51f96a37955ea62fbb98c22081b81f32f0ba599238aa19c4
6
+ metadata.gz: 2ac7da23d1fc020f8450a374299c4fb9dc079532b122c9ceb5f4a193a3a16895888ee273f72d69c60b2cbbb022da84a8d91006cef15c4216f43309a1a982eaf1
7
+ data.tar.gz: 400bf68c4cc3a00452b6bf67aa75f407378fa8670a89c272377ea213f53bd059f5df69aeae7f36c539beb594cd8506f3709fcd82a3669573e0526de0f68dd469
data/init.rb CHANGED
@@ -13,6 +13,7 @@ end
13
13
 
14
14
  Rails.configuration.to_prepare do
15
15
  require_dependency 'redmine_plugins_helper/patches/redmine/plugin_patch'
16
+ require_dependency 'redmine_plugins_helper/patches/redmine/plugin_migration_context'
16
17
  ::Redmine::Plugin.registered_plugins.values.each(&:add_assets_paths)
17
18
  ::Redmine::Plugin.registered_plugins.values.each(&:load_initializers)
18
19
  end
@@ -30,31 +30,18 @@ module RedminePluginsHelper
30
30
  end
31
31
 
32
32
  def database_version?(version)
33
- r = ::ActiveRecord::Base.connection.execute(<<EOS.strip_heredoc)
34
- select exists(
35
- select 1
36
- from #{ActiveRecord::Migrator.schema_migrations_table_name}
37
- where version=#{ActiveRecord::Base.sanitize(version)}
38
- )
39
- EOS
40
- r.getvalue(0, 0) == 't'
33
+ ::ActiveRecord::SchemaMigration.where(version: version).any?
41
34
  end
42
35
 
43
36
  def remove_plugin_version(source_version)
44
37
  Rails.logger.info("Removing #{source_version}")
45
- ::ActiveRecord::Base.connection.execute(<<EOS.strip_heredoc)
46
- delete from #{ActiveRecord::Migrator.schema_migrations_table_name}
47
- where version=#{ActiveRecord::Base.sanitize(source_version)}
48
- EOS
38
+ ::ActiveRecord::SchemaMigration.find_by(version: source_version).destroy!
49
39
  end
50
40
 
51
41
  def move_plugin_version(source_version, target_version)
52
42
  Rails.logger.info("Moving #{source_version} to plugin \"#{target_version}\"")
53
- ::ActiveRecord::Base.connection.execute(<<EOS.strip_heredoc)
54
- update #{ActiveRecord::Migrator.schema_migrations_table_name}
55
- set version=#{ActiveRecord::Base.sanitize(target_version)}
56
- where version=#{ActiveRecord::Base.sanitize(source_version)}
57
- EOS
43
+ ::ActiveRecord::SchemaMigration.find_by(version: source_version)
44
+ .update!(version: target_version)
58
45
  end
59
46
 
60
47
  def local_version(timestamp)
@@ -1,19 +1,38 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedminePluginsHelper
2
4
  class Migrate
3
- def initialize
5
+ attr_reader :plugin_name, :migration_version
6
+
7
+ def initialize(plugin_name, migration_version)
8
+ @plugin_name = plugin_name
9
+ @migration_version = migration_version
4
10
  run
5
11
  end
6
12
 
7
13
  private
8
14
 
9
15
  def run
16
+ if plugin_name.present?
17
+ run_version
18
+ else
19
+ run_all
20
+ end
21
+ end
22
+
23
+ def run_all
10
24
  versions_sorted.each do |v|
11
25
  migrate_plugin_version(v)
12
26
  end
13
27
  end
14
28
 
29
+ def run_version
30
+ ::Redmine::Plugin.migrate(plugin_name, migration_version)
31
+ end
32
+
15
33
  def migrate_plugin_version(v)
16
34
  return if migrated?(v)
35
+
17
36
  ::Redmine::Plugin.registered_plugins[v[:plugin]].migrate(v[:timestamp])
18
37
  end
19
38
 
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'redmine/plugin'
4
+
5
+ module RedminePluginsHelper
6
+ module Patches
7
+ module Redmine
8
+ module PluginMigrationContextPatch
9
+ extend ActiveSupport::Concern
10
+
11
+ def get_all_versions
12
+ plugin.present? ? plugin.migrations : super
13
+ end
14
+
15
+ private
16
+
17
+ def plugin
18
+ @plugin ||= begin
19
+ ::Redmine::Plugin.registered_plugins.values.find do |plugin|
20
+ ::File.join(plugin.directory, 'db', 'migrate') == migrations_paths
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ if ::Redmine::Plugin.const_defined?('MigrationContext')
30
+ ::Redmine::Plugin::MigrationContext.prepend(
31
+ ::RedminePluginsHelper::Patches::Redmine::PluginMigrationContextPatch
32
+ )
33
+ end
@@ -7,6 +7,9 @@ module RedminePluginsHelper
7
7
 
8
8
  included do
9
9
  extend ClassMethods
10
+ include InstanceMethods
11
+ setup { mailer_setup }
12
+ teardown { mailer_teadown }
10
13
  end
11
14
 
12
15
  module ClassMethods
@@ -19,6 +22,23 @@ module RedminePluginsHelper
19
22
  fixtures(*files)
20
23
  end
21
24
  end
25
+
26
+ module InstanceMethods
27
+ def mailer_setup
28
+ unless @mailer_perform_deliveries_changed
29
+ @mailer_perform_deliveries_changed = true
30
+ @mailer_perform_deliveries_was_enabled = ::ActionMailer::Base.perform_deliveries
31
+ end
32
+ ::ActionMailer::Base.perform_deliveries = false
33
+ end
34
+
35
+ def mailer_teadown
36
+ return unless @mailer_perform_deliveries_changed
37
+
38
+ ::ActionMailer::Base.perform_deliveries = @mailer_perform_deliveries_was_enabled
39
+ @mailer_perform_deliveries_changed = false
40
+ end
41
+ end
22
42
  end
23
43
  end
24
44
  end
@@ -3,5 +3,5 @@
3
3
  module RedminePluginsHelper
4
4
  AUTHOR = 'Eduardo Henrique Bogoni'
5
5
  SUMMARY = 'Helper for Redmine plugins'
6
- VERSION = '0.5.2'
6
+ VERSION = '0.6.4'
7
7
  end
@@ -5,11 +5,36 @@ namespace :redmine do
5
5
  task migrate: ['db:migrate', 'redmine:plugins:migrate:fix', 'redmine:plugins:migrate'] do
6
6
  end
7
7
 
8
+ namespace :version do
9
+ desc 'Shows Redmine\'s version.'
10
+ task show: :environment do
11
+ puts ::Redmine::VERSION::STRING
12
+ end
13
+ end
14
+
15
+ task version: 'version:show'
16
+
8
17
  namespace :plugins do
9
18
  desc 'Migrates installed plugins.'
10
19
  task migrate: :environment do
11
- RedminePluginsHelper::Migrate.new
12
- Rake::Task['db:schema:dump'].invoke
20
+ name = ENV['NAME']
21
+ version = nil
22
+ version_string = ENV['VERSION']
23
+ if version_string
24
+ if version_string =~ /^\d+$/
25
+ version = version_string.to_i
26
+ abort 'The VERSION argument requires a plugin NAME.' if name.nil?
27
+ else
28
+ abort "Invalid VERSION #{version_string} given."
29
+ end
30
+ end
31
+
32
+ begin
33
+ RedminePluginsHelper::Migrate.new(name, version)
34
+ Rake::Task['db:schema:dump'].invoke
35
+ rescue Redmine::PluginNotFound
36
+ abort "Plugin #{name} was not found."
37
+ end
13
38
  end
14
39
 
15
40
  namespace :migrate do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_plugins_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
- - 0.5.2
7
+ - 0.6.4
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
11
+ date: 2020-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sass-rails
@@ -40,6 +40,7 @@ files:
40
40
  - lib/redmine_plugins_helper/hooks/add_assets.rb
41
41
  - lib/redmine_plugins_helper/migrate.rb
42
42
  - lib/redmine_plugins_helper/migrations.rb
43
+ - lib/redmine_plugins_helper/patches/redmine/plugin_migration_context.rb
43
44
  - lib/redmine_plugins_helper/patches/redmine/plugin_patch.rb
44
45
  - lib/redmine_plugins_helper/patches/test_case_patch.rb
45
46
  - lib/redmine_plugins_helper/settings.rb
@@ -64,8 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
65
  - !ruby/object:Gem::Version
65
66
  version: '0'
66
67
  requirements: []
67
- rubyforge_project:
68
- rubygems_version: 2.7.7
68
+ rubygems_version: 3.0.8
69
69
  signing_key:
70
70
  specification_version: 4
71
71
  summary: Helper for Redmine plugins