hancock_cms_cache 1.0.2
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 +7 -0
- data/.gitignore +9 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/README.md +35 -0
- data/Rakefile +2 -0
- data/app/assets/javascripts/hancock/rails_admin/plugins/cache.coffee +4 -0
- data/app/assets/javascripts/hancock/rails_admin/plugins/cache/custom/ui.coffee +0 -0
- data/app/assets/stylesheets/hancock/rails_admin/plugins/cache.sass +3 -0
- data/app/assets/stylesheets/hancock/rails_admin/plugins/cache/custom/theming.sass +0 -0
- data/app/controllers/concerns/hancock/cache/action.rb +58 -0
- data/app/controllers/concerns/hancock/cache/ajax_csrf.rb +25 -0
- data/app/controllers/concerns/hancock/cache/fragments.rb +34 -0
- data/app/controllers/concerns/hancock/cache/no_cache.rb +12 -0
- data/app/helpers/hancock/cache/cache_helper.rb +167 -0
- data/app/models/concerns/hancock/cache/cacheable.rb +164 -0
- data/app/models/concerns/hancock/cache/cleared_stack.rb +43 -0
- data/app/models/concerns/hancock/cache/decorators/fragment.rb +41 -0
- data/app/models/concerns/hancock/cache/loadable.rb +44 -0
- data/app/models/concerns/hancock/cache/snapshotable.rb +49 -0
- data/app/models/hancock/cache/fragment.rb +11 -0
- data/app/views/hancock/_assets.html.slim +24 -0
- data/app/views/layouts/application.html.slim +33 -0
- data/app/views/rails_admin/main/hancock_cache_global_clear.html.slim +25 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/config/initializers/cache_detector.rb +53 -0
- data/config/initializers/hancock_cache.rb +7 -0
- data/config/locales/hancock.cache.ru.yml +59 -0
- data/hancock_cms_cache.gemspec +34 -0
- data/lib/generators/hancock/cache/config/config_generator.rb +13 -0
- data/lib/generators/hancock/cache/config/templates/hancock_cache.erb +14 -0
- data/lib/generators/hancock/cache/models/decorators_generator.rb +24 -0
- data/lib/generators/hancock/cache/models/fragment_generator.rb +39 -0
- data/lib/generators/hancock/cache/models/templates/fragment.erb +38 -0
- data/lib/hancock/cache/admin.rb +37 -0
- data/lib/hancock/cache/admin/fragment.rb +140 -0
- data/lib/hancock/cache/configuration.rb +38 -0
- data/lib/hancock/cache/engine.rb +20 -0
- data/lib/hancock/cache/models/fragment.rb +310 -0
- data/lib/hancock/cache/models/mongoid/fragment.rb +259 -0
- data/lib/hancock/cache/rails_admin_ext/hancock_cache_clear.rb +95 -0
- data/lib/hancock/cache/rails_admin_ext/hancock_cache_dump_snapshot.rb +92 -0
- data/lib/hancock/cache/rails_admin_ext/hancock_cache_global_clear.rb +74 -0
- data/lib/hancock/cache/rails_admin_ext/hancock_cache_restore_snapshot.rb +92 -0
- data/lib/hancock/cache/rails_admin_ext/hancock_touch.rb +95 -0
- data/lib/hancock/cache/rails_admin_settings_patch.rb +185 -0
- data/lib/hancock/cache/version.rb +5 -0
- data/lib/hancock_cms_cache.rb +34 -0
- data/release.sh +6 -0
- metadata +141 -0
@@ -0,0 +1,259 @@
|
|
1
|
+
module Hancock::Cache
|
2
|
+
module Models::Mongoid
|
3
|
+
module Fragment
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
|
8
|
+
include Hancock::Cache::Snapshotable
|
9
|
+
|
10
|
+
index({name: 1}, {unique: true, background: true})
|
11
|
+
index({last_clear_user_id: 1, last_clear_time: 1}, {background: true})
|
12
|
+
|
13
|
+
field :name, type: String, localize: false, default: ""
|
14
|
+
scope :by_name, -> (_name) {
|
15
|
+
if _name.is_a?(Array)
|
16
|
+
where(:name.in => _name.compact.map(&:strip))
|
17
|
+
else
|
18
|
+
if _name.is_a?(String)
|
19
|
+
where(name: (_name and _name.strip))
|
20
|
+
else
|
21
|
+
where(name: _name)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
}
|
25
|
+
scope :by_name_from_view, -> (_name) {
|
26
|
+
by_name(self.name_from_view(_name))
|
27
|
+
}
|
28
|
+
scope :find_by_name, -> (_name) {
|
29
|
+
by_name(_name).first
|
30
|
+
}
|
31
|
+
scope :find_by_name_from_view, -> (_name) {
|
32
|
+
by_name_from_view(_name).first
|
33
|
+
}
|
34
|
+
|
35
|
+
field :desc, type: String, localize: Hancock::Cache.config.localize, default: ""
|
36
|
+
field :virtual_path, type: String, localize: false, default: ""
|
37
|
+
field :is_html, type: Boolean, default: true
|
38
|
+
|
39
|
+
field :is_action_cache, type: Boolean, default: false
|
40
|
+
scope :is_action_cache, -> {
|
41
|
+
where(is_action_cache: true)
|
42
|
+
}
|
43
|
+
|
44
|
+
field :on_ram, type: Boolean, default: false
|
45
|
+
scope :on_ram, -> {
|
46
|
+
where(on_ram: true)
|
47
|
+
}
|
48
|
+
attr_accessor :on_ram_data
|
49
|
+
def load_data_on_ram
|
50
|
+
if self.on_ram and !self.name.blank?
|
51
|
+
self.on_ram_data = Rails.cache.read(self.name)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
field :last_clear_time, type: DateTime
|
56
|
+
if Hancock.rails4?
|
57
|
+
belongs_to :last_clear_user, class_name: Mongoid::Userstamp.config.user_model_name, autosave: false
|
58
|
+
else
|
59
|
+
belongs_to :last_clear_user, class_name: Mongoid::Userstamp.config.user_model_name, autosave: false, optional: true, required: false
|
60
|
+
|
61
|
+
if relations.has_key?("updater") and defined?(::Mongoid::History)
|
62
|
+
belongs_to :updater, class_name: ::Mongoid::History.modifier_class_name, optional: true, validate: false
|
63
|
+
_validators.delete(:updater)
|
64
|
+
_validate_callbacks.each do |callback|
|
65
|
+
if callback.raw_filter.respond_to?(:attributes) and callback.raw_filter.attributes.include?(:updater)
|
66
|
+
_validate_callbacks.delete(callback)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
has_and_belongs_to_many :parents, class_name: "Hancock::Cache::Fragment", inverse_of: nil
|
73
|
+
field :parent_names, type: Array, default: []
|
74
|
+
def set_parent_names
|
75
|
+
self.parent_names = self.parents.distinct(:name)
|
76
|
+
end
|
77
|
+
def set_parent_names!
|
78
|
+
self.set_parent_names and self.save
|
79
|
+
end
|
80
|
+
def update_parent_names!
|
81
|
+
self.set_parent_names and self.class.where(id: self.id).update(parent_names: self.parent_names)
|
82
|
+
end
|
83
|
+
before_save do
|
84
|
+
if self.parent_ids_changed?
|
85
|
+
self.set_parent_names
|
86
|
+
end
|
87
|
+
self
|
88
|
+
end
|
89
|
+
def set_parent_ids
|
90
|
+
self.parent_ids = self.class.by_name(self.parent_names).distinct(:_id) unless self.parent_names.blank?
|
91
|
+
end
|
92
|
+
def set_parent_ids!
|
93
|
+
self.set_parent_ids and self.save
|
94
|
+
end
|
95
|
+
def update_parent_ids!
|
96
|
+
self.set_parent_ids and self.class.where(id: self.id).update(parent_ids: self.parent_ids, parent_names: self.parent_names)
|
97
|
+
end
|
98
|
+
|
99
|
+
def reset_parents
|
100
|
+
self.parent_ids = self.parents.distinct(:_id)
|
101
|
+
end
|
102
|
+
def reset_parents!
|
103
|
+
self.reset_parents and self.save
|
104
|
+
end
|
105
|
+
def self.reset_parents!
|
106
|
+
self.all.map(&:reset_parents!)
|
107
|
+
end
|
108
|
+
|
109
|
+
def name_n_desc
|
110
|
+
"#{self.name}<hr>#{self.desc}".html_safe
|
111
|
+
end
|
112
|
+
def parents_str
|
113
|
+
self.parents.map(&:name).join(", ")
|
114
|
+
end
|
115
|
+
def name_n_desc_n_parents
|
116
|
+
"#{self.name}<hr>#{self.desc}<hr>#{parents_str}".html_safe
|
117
|
+
end
|
118
|
+
|
119
|
+
def last_clear_data
|
120
|
+
"#{self.last_clear_time}<hr>#{self.last_clear_user}".html_safe
|
121
|
+
end
|
122
|
+
def snapshot_data
|
123
|
+
"#{self.last_dump_snapshot_time}<hr>#{self.last_restore_snapshot_time}<hr>#{self.get_snapshot(false)}".html_safe
|
124
|
+
end
|
125
|
+
|
126
|
+
def data(prettify = true)
|
127
|
+
_data = Rails.cache.read(self.name)
|
128
|
+
if prettify
|
129
|
+
if self.is_html
|
130
|
+
"<pre>#{CGI::escapeHTML(Nokogiri::HTML.fragment(_data).to_xhtml(indent: 2))}</pre>".html_safe
|
131
|
+
else
|
132
|
+
_data
|
133
|
+
end
|
134
|
+
else
|
135
|
+
_data
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def set_last_clear_user(forced_user = nil)
|
140
|
+
unless forced_user
|
141
|
+
return false unless Mongoid::Userstamp.has_current_user?
|
142
|
+
self.last_clear_user = Mongoid::Userstamp.current_user
|
143
|
+
else
|
144
|
+
self.last_clear_user = forced_user
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
def self.set_for_object(key_name, obj)
|
149
|
+
if key_name.is_a?(Array)
|
150
|
+
return key_name.map do |k|
|
151
|
+
set_for_object(k, obj) unless k.blank?
|
152
|
+
end
|
153
|
+
else
|
154
|
+
_frag = self.where(name: key_name).first
|
155
|
+
_frag and _frag.set_for_object obj
|
156
|
+
end
|
157
|
+
end
|
158
|
+
def self.set_for_objects(key_name, _class)
|
159
|
+
if key_name.is_a?(Array)
|
160
|
+
return key_name.map do |k|
|
161
|
+
set_for_objects(k, _class) unless k.blank?
|
162
|
+
end
|
163
|
+
else
|
164
|
+
_frag = self.where(name: key_name).first
|
165
|
+
_frag and _frag.set_for_objects _class
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
# def set_for_object(obj)
|
170
|
+
# if obj.is_a?(Hash)
|
171
|
+
# if obj[:model].present?
|
172
|
+
# if obj[:ids].present?
|
173
|
+
# return obj[:ids].map do |_id|
|
174
|
+
# set_for_object({model: obj[:model], id: _id}) unless _id.blank?
|
175
|
+
# end
|
176
|
+
# else
|
177
|
+
# if obj[:id].nil?
|
178
|
+
# return set_for_objects(obj[:model])
|
179
|
+
# else
|
180
|
+
# obj = obj[:model].where(id: obj[:id]).first
|
181
|
+
# end
|
182
|
+
# end
|
183
|
+
# else
|
184
|
+
# return false
|
185
|
+
# end
|
186
|
+
#
|
187
|
+
# elsif obj.is_a?(Array)
|
188
|
+
# return obj.map do |_obj|
|
189
|
+
# set_for_object(_obj) unless _obj.blank?
|
190
|
+
# end
|
191
|
+
# end
|
192
|
+
#
|
193
|
+
# if obj
|
194
|
+
# if obj.is_a?(Class)
|
195
|
+
# set_for_objects obj
|
196
|
+
# else
|
197
|
+
# unless obj.cache_keys.include?(self.name)
|
198
|
+
# obj.set(cache_keys_str: (obj.cache_keys << self.name).uniq.join("\n"))
|
199
|
+
# obj.reload
|
200
|
+
# end
|
201
|
+
# end
|
202
|
+
# end
|
203
|
+
# end
|
204
|
+
# def set_for_objects(_class)
|
205
|
+
# _class.all.map { |obj|
|
206
|
+
# unless obj.cache_keys.include?(self.name)
|
207
|
+
# obj.set(cache_keys_str: (obj.cache_keys << self.name).uniq.join("\n"))
|
208
|
+
# obj.reload
|
209
|
+
# end
|
210
|
+
# }
|
211
|
+
# end
|
212
|
+
|
213
|
+
def self.set_for_setting(key_name, setting_obj)
|
214
|
+
if key_name.is_a?(Array)
|
215
|
+
return key_name.map do |k|
|
216
|
+
set_for_setting(k, setting_obj) unless k.blank?
|
217
|
+
end
|
218
|
+
else
|
219
|
+
_frag = self.where(name: key_name).first
|
220
|
+
_frag and _frag.set_for_setting setting_obj
|
221
|
+
end
|
222
|
+
end
|
223
|
+
# def set_for_setting(setting_obj)
|
224
|
+
# if defined?(RailsAdminModelSettings)
|
225
|
+
# if setting_obj.is_a?(Hash)
|
226
|
+
# unless setting_obj[:keys].present?
|
227
|
+
# if setting_obj[:key].nil?
|
228
|
+
# return set_for_setting({ns: setting_obj[:ns], key: //})
|
229
|
+
# else
|
230
|
+
# setting_obj = RailsAdminSettings::Setting.where(ns: setting_obj[:ns], key: setting_obj[:key]).first
|
231
|
+
# end
|
232
|
+
#
|
233
|
+
# else
|
234
|
+
# return setting_obj[:keys].map do |k|
|
235
|
+
# set_for_setting({ns: setting_obj[:ns], key: k}) unless k.blank?
|
236
|
+
# end
|
237
|
+
# end
|
238
|
+
#
|
239
|
+
# elsif setting_obj.is_a?(Array)
|
240
|
+
# return setting_obj.map do |obj|
|
241
|
+
# set_for_setting(obj) unless obj.blank?
|
242
|
+
# end
|
243
|
+
# end
|
244
|
+
#
|
245
|
+
# setting_obj and set_for_object(setting_obj) and setting_obj.reload
|
246
|
+
# end
|
247
|
+
# end
|
248
|
+
|
249
|
+
end
|
250
|
+
|
251
|
+
class_methods do
|
252
|
+
def track_history?
|
253
|
+
false
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
end
|
258
|
+
end
|
259
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'rails_admin/config/actions'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Actions
|
6
|
+
class HancockCacheClear < Base
|
7
|
+
RailsAdmin::Config::Actions.register(self)
|
8
|
+
|
9
|
+
# Is the action acting on the root level (Example: /admin/contact)
|
10
|
+
register_instance_option :root? do
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
register_instance_option :collection? do
|
15
|
+
false
|
16
|
+
end
|
17
|
+
|
18
|
+
# Is the action on an object scope (Example: /admin/team/1/edit)
|
19
|
+
register_instance_option :member? do
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
register_instance_option :controller do
|
24
|
+
proc do
|
25
|
+
ajax_link = Proc.new do |fv, badge|
|
26
|
+
# can_edit_obj = can?(:edit, @object)
|
27
|
+
# render json: {
|
28
|
+
# text: fv.html_safe,
|
29
|
+
# href: hancock_cache_clear_path(model_name: @abstract_model, id: @object.id),
|
30
|
+
# class: 'label ' + badge,
|
31
|
+
# url: index_path(model_name: @abstract_model)
|
32
|
+
# }
|
33
|
+
end
|
34
|
+
if params['id'].present?
|
35
|
+
begin
|
36
|
+
@object = @abstract_model.model.unscoped.find(params['id'])
|
37
|
+
if @object.clear!
|
38
|
+
if params['ajax'].present?
|
39
|
+
ajax_link.call('♻', 'label-success')
|
40
|
+
else
|
41
|
+
flash[:success] = I18n.t('admin.hancock_cache_clear.cleared', obj: @object, name: @object.name)
|
42
|
+
# unless @object.parents.blank?
|
43
|
+
# flash[:info] = "Также, возможно необходимо сбросить кеш с этми ключами: #{@object.parents_str}"
|
44
|
+
# end
|
45
|
+
end
|
46
|
+
else
|
47
|
+
if params['ajax'].present?
|
48
|
+
render plain: @object.errors.full_messages.join(', '), layout: false, status: 422
|
49
|
+
else
|
50
|
+
flash[:error] = @object.errors.full_messages.join(', ')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
rescue Exception => e
|
54
|
+
if params['ajax'].present?
|
55
|
+
render plain: I18n.t('admin.hancock_cache_clear.error', err: e.to_s), status: 422
|
56
|
+
else
|
57
|
+
flash[:error] = I18n.t('admin.hancock_cache_clear.error', err: e.to_s)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
else
|
61
|
+
if params['ajax'].present?
|
62
|
+
render plain: I18n.t('admin.hancock_cache_clear.no_id'), status: 422
|
63
|
+
else
|
64
|
+
flash[:error] = I18n.t('admin.hancock_cache_clear.no_id')
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
unless params['ajax'].present?
|
69
|
+
begin
|
70
|
+
fallback_location = index_path(model_name: @abstract_model, id: @object.id)
|
71
|
+
rescue
|
72
|
+
fallback_location = index_path(model_name: @abstract_model)
|
73
|
+
end
|
74
|
+
redirect_back(fallback_location: fallback_location)
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
register_instance_option :link_icon do
|
81
|
+
'icon-trash'
|
82
|
+
end
|
83
|
+
|
84
|
+
register_instance_option :pjax? do
|
85
|
+
false
|
86
|
+
end
|
87
|
+
|
88
|
+
register_instance_option :http_methods do
|
89
|
+
[:get]
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'rails_admin/config/actions'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Actions
|
6
|
+
class HancockCacheDumpSnapshot < Base
|
7
|
+
RailsAdmin::Config::Actions.register(self)
|
8
|
+
|
9
|
+
# Is the action acting on the root level (Example: /admin/contact)
|
10
|
+
register_instance_option :root? do
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
register_instance_option :collection? do
|
15
|
+
false
|
16
|
+
end
|
17
|
+
|
18
|
+
# Is the action on an object scope (Example: /admin/team/1/edit)
|
19
|
+
register_instance_option :member? do
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
register_instance_option :controller do
|
24
|
+
proc do
|
25
|
+
ajax_link = Proc.new do |fv, badge|
|
26
|
+
# can_edit_obj = can?(:edit, @object)
|
27
|
+
# render json: {
|
28
|
+
# text: fv.html_safe,
|
29
|
+
# href: hancock_cache_clear_path(model_name: @abstract_model, id: @object.id),
|
30
|
+
# class: 'label ' + badge,
|
31
|
+
# url: index_path(model_name: @abstract_model)
|
32
|
+
# }
|
33
|
+
end
|
34
|
+
if params['id'].present?
|
35
|
+
begin
|
36
|
+
@object = @abstract_model.model.unscoped.find(params['id'])
|
37
|
+
if @object.dump_snapshot!
|
38
|
+
if params['ajax'].present?
|
39
|
+
ajax_link.call('♻', 'label-success')
|
40
|
+
else
|
41
|
+
flash[:success] = I18n.t('admin.hancock_cache_dump_snapshot.dumped', obj: @object)
|
42
|
+
end
|
43
|
+
else
|
44
|
+
if params['ajax'].present?
|
45
|
+
render plain: @object.errors.full_messages.join(', '), layout: false, status: 422
|
46
|
+
else
|
47
|
+
flash[:error] = @object.errors.full_messages.join(', ')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
rescue Exception => e
|
51
|
+
if params['ajax'].present?
|
52
|
+
render plain: I18n.t('admin.hancock_cache_dump_snapshot.error', err: e.to_s), status: 422
|
53
|
+
else
|
54
|
+
flash[:error] = I18n.t('admin.hancock_cache_dump_snapshot.error', err: e.to_s)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
else
|
58
|
+
if params['ajax'].present?
|
59
|
+
render plain: I18n.t('admin.hancock_cache_dump_snapshot.no_id'), status: 422
|
60
|
+
else
|
61
|
+
flash[:error] = I18n.t('admin.hancock_cache_dump_snapshot.no_id')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
unless params['ajax'].present?
|
66
|
+
begin
|
67
|
+
fallback_location = index_path(model_name: @abstract_model, id: @object.id)
|
68
|
+
rescue
|
69
|
+
fallback_location = index_path(model_name: @abstract_model)
|
70
|
+
end
|
71
|
+
redirect_back(fallback_location: fallback_location)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
register_instance_option :link_icon do
|
78
|
+
'fa fa-save'
|
79
|
+
end
|
80
|
+
|
81
|
+
register_instance_option :pjax? do
|
82
|
+
false
|
83
|
+
end
|
84
|
+
|
85
|
+
register_instance_option :http_methods do
|
86
|
+
[:get]
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'rails_admin/config/actions'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Actions
|
6
|
+
class HancockCacheGlobalClear < Base
|
7
|
+
RailsAdmin::Config::Actions.register(self)
|
8
|
+
|
9
|
+
# Is the action acting on the root level (Example: /admin/contact)
|
10
|
+
register_instance_option :root? do
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
register_instance_option :collection? do
|
15
|
+
true
|
16
|
+
end
|
17
|
+
|
18
|
+
# Is the action on an object scope (Example: /admin/team/1/edit)
|
19
|
+
register_instance_option :member? do
|
20
|
+
false
|
21
|
+
end
|
22
|
+
|
23
|
+
register_instance_option :route_fragment do
|
24
|
+
'hancock_cache_global_clear'
|
25
|
+
end
|
26
|
+
|
27
|
+
register_instance_option :controller do
|
28
|
+
Proc.new do |klass|
|
29
|
+
# @config = ::HancockCacheGlobalClear::Configuration.new @abstract_model
|
30
|
+
if request.get?
|
31
|
+
render action: @action.template_name
|
32
|
+
|
33
|
+
elsif request.post?
|
34
|
+
case params[:type].to_s
|
35
|
+
when "global"
|
36
|
+
begin
|
37
|
+
Rails.cache.clear
|
38
|
+
::Hancock::Cache::Fragment.all.to_a.map(&:clear_dry!)
|
39
|
+
flash[:success] = 'Весь кеш очищен'
|
40
|
+
rescue Exception => ex
|
41
|
+
flash[:error] = 'Ошибка'
|
42
|
+
end
|
43
|
+
when "fragments"
|
44
|
+
begin
|
45
|
+
# Hancock::Cache::Fragment.all.to_a.map do |f|
|
46
|
+
# f.clear!
|
47
|
+
# end
|
48
|
+
::Hancock::Cache::Fragment.clear_all
|
49
|
+
flash[:success] = 'Кеш очищен'
|
50
|
+
rescue Exception => ex
|
51
|
+
flash[:error] = 'Ошибка'
|
52
|
+
end
|
53
|
+
else
|
54
|
+
flash[:error] = 'Неверно указан тип кеша для сброса'
|
55
|
+
end
|
56
|
+
|
57
|
+
redirect_to hancock_cache_global_clear_path(model_name: 'hancock~cache~fragment'.freeze)
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
register_instance_option :link_icon do
|
64
|
+
'icon-refresh'
|
65
|
+
end
|
66
|
+
|
67
|
+
register_instance_option :http_methods do
|
68
|
+
[:get, :post]
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|