Class: RedmineExtensions::PatchManager

Inherits:
Object
  • Object
show all
Defined in:
lib/redmine_extensions/patch_manager.rb

Defined Under Namespace

Classes: EasyPatch, EasyPatchesCollection, EasyPatchesSection

Constant Summary collapse

PERSISTING_PATCHES =
[:force_first, :ruby, :rails, :redmine_plugins, :others]

Class Method Summary collapse

Class Method Details

.apply_easy_page_patchesObject



113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/redmine_extensions/patch_manager.rb', line 113

def self.apply_easy_page_patches
  return if @registered_easy_page_controllers.nil? || @registered_easy_page_helpers.nil?
  @registered_easy_page_controllers.each do |controller_klass_name|
    controller_klass = controller_klass_name.constantize

    @registered_easy_page_helpers.each do |helper_klass_name|
      if m = helper_klass_name.match(/\A(\S+)Helper\z/)
        helper_klass_symbol = m[1]
      end

      controller_klass.class_eval "helper :#{helper_klass_symbol.underscore}" if helper_klass_symbol
      controller_klass.class_eval "include #{helper_klass_name}"
    end
  end
end

.apply_persisting_patchesObject



129
130
131
132
133
134
135
# File 'lib/redmine_extensions/patch_manager.rb', line 129

def self.apply_persisting_patches
  PERSISTING_PATCHES.each do |section|
    @@registered_patches[section].apply_all_patches
  end

  true
end

.apply_reloadable_patchesObject



137
138
139
140
141
142
143
144
145
# File 'lib/redmine_extensions/patch_manager.rb', line 137

def self.apply_reloadable_patches
  (@@registered_patches.keys - PERSISTING_PATCHES).each do |section|
    # pp "applying #{@@registered_patches[section].count} patches for section '#{section}'"
    @@registered_patches[section].apply_all_patches
  end

  apply_easy_page_patches
  true
end

.initialize_sectionsObject

is called after EasyPatchesSection load



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/redmine_extensions/patch_manager.rb', line 8

def self.initialize_sections
  @@registered_patches ||= ActiveSupport::OrderedHash.new
  @@registered_patches[:force_first] ||= EasyPatchesSection.new
  @@registered_patches[:ruby] ||= EasyPatchesSection.new
  @@registered_patches[:rails] ||= EasyPatchesSection.new
  @@registered_patches[:redmine_plugins] ||= EasyPatchesSection.new
  @@registered_patches[:others] ||= EasyPatchesSection.new
  @@registered_patches[:concerns] ||= EasyPatchesSection.new
  @@registered_patches[:controllers] ||= EasyPatchesSection.new
  @@registered_patches[:helpers] ||= EasyPatchesSection.new
  @@registered_patches[:models] ||= EasyPatchesSection.new
end

.register_concern_patch(original_klass_to_patch, patching_module, options = {}) ⇒ Object



77
78
79
# File 'lib/redmine_extensions/patch_manager.rb', line 77

def self.register_concern_patch(original_klass_to_patch, patching_module, options={})
  register_patch(original_klass_to_patch, patching_module, {:section => :concerns}.merge(options))
end

.register_controller_patch(original_klass_to_patch, patching_module, options = {}) ⇒ Object



81
82
83
# File 'lib/redmine_extensions/patch_manager.rb', line 81

def self.register_controller_patch(original_klass_to_patch, patching_module, options={})
  register_patch(original_klass_to_patch, patching_module, {:section => :controllers}.merge(options))
end

.register_easy_page_controller(*controller_or_controllers_klass_name) ⇒ Object



105
106
107
108
109
110
111
# File 'lib/redmine_extensions/patch_manager.rb', line 105

def self.register_easy_page_controller(*controller_or_controllers_klass_name)
  @registered_easy_page_controllers ||= []
  controller_or_controllers_klass_name.each do |controller_klass_name|
    @registered_easy_page_controllers << controller_klass_name if !@registered_easy_page_controllers.include?(controller_klass_name)
  end
  @registered_easy_page_controllers
end

.register_easy_page_helper(*helper_or_helpers_klass_name) ⇒ Object



97
98
99
100
101
102
103
# File 'lib/redmine_extensions/patch_manager.rb', line 97

def self.register_easy_page_helper(*helper_or_helpers_klass_name)
  @registered_easy_page_helpers ||= []
  helper_or_helpers_klass_name.each do |helper_klass_name|
    @registered_easy_page_helpers << helper_klass_name if !@registered_easy_page_helpers.include?(helper_klass_name)
  end
  @registered_easy_page_helpers
end

.register_helper_patch(original_klass_to_patch, patching_module, options = {}) ⇒ Object



85
86
87
# File 'lib/redmine_extensions/patch_manager.rb', line 85

def self.register_helper_patch(original_klass_to_patch, patching_module, options={})
  register_patch(original_klass_to_patch, patching_module, {:section => :helpers}.merge(options))
end

.register_model_patch(original_klass_to_patch, patching_module, options = {}) ⇒ Object



89
90
91
# File 'lib/redmine_extensions/patch_manager.rb', line 89

def self.register_model_patch(original_klass_to_patch, patching_module, options={})
  register_patch(original_klass_to_patch, patching_module, {:section => :models}.merge(options))
end

.register_other_patch(original_klass_to_patch, patching_module, options = {}) ⇒ Object



73
74
75
# File 'lib/redmine_extensions/patch_manager.rb', line 73

def self.register_other_patch(original_klass_to_patch, patching_module, options={})
  register_patch(original_klass_to_patch, patching_module, {:section => :others}.merge(options))
end

.register_patch_to_be_first(original_klass_to_patch, patching_module, options = {}) ⇒ Object



93
94
95
# File 'lib/redmine_extensions/patch_manager.rb', line 93

def self.register_patch_to_be_first(original_klass_to_patch, patching_module, options={})
  register_patch(original_klass_to_patch, patching_module, {:section => :force_first}.merge(options))
end

.register_rails_patch(original_klass_to_patch, patching_module, options = {}) ⇒ Object



65
66
67
# File 'lib/redmine_extensions/patch_manager.rb', line 65

def self.register_rails_patch(original_klass_to_patch, patching_module, options={})
  register_patch(original_klass_to_patch, patching_module, {:section => :rails}.merge(options))
end

.register_redmine_plugin_patch(original_klass_to_patch, patching_module, options = {}) ⇒ Object



69
70
71
# File 'lib/redmine_extensions/patch_manager.rb', line 69

def self.register_redmine_plugin_patch(original_klass_to_patch, patching_module, options={})
  register_patch(original_klass_to_patch, patching_module, {:section => :redmine_plugins}.merge(options))
end

.register_ruby_patch(original_klass_to_patch, patching_module, options = {}) ⇒ Object



61
62
63
# File 'lib/redmine_extensions/patch_manager.rb', line 61

def self.register_ruby_patch(original_klass_to_patch, patching_module, options={})
  register_patch(original_klass_to_patch, patching_module, {:section => :ruby}.merge(options))
end