kono_utils_bootstrap_view4 0.2.2 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 064dc913cd0495e59ac918f94ba761533d861d2b0cfd47f2509aed226650721c
4
- data.tar.gz: 984f63537e0648d1351c243629623f21dfcc5be2f98f2b514a0e7f707c24080e
3
+ metadata.gz: 2d296477a0c4cfc41dc5c7e80ad003aca00c6bfd4c8665d347be1c1db665543b
4
+ data.tar.gz: 6a27c0d614d00e8e8c8287b00f788826b090e827f315e75e3a806b056620c693
5
5
  SHA512:
6
- metadata.gz: db0c13fcd34b188fe04b0e49a4d7079c0c2b77b7e068d8e4514056a77b489e8cfa80e455ae4d00a2ade8c2af5b02202d23990bb2fea964dd0bf8ab129e04e53e
7
- data.tar.gz: b880b9ffe28d1667e24fac3b9167f754850a1faf26f018d8488cc2f3f77cd223d4de1eb177eed0c4b38f62314a094606cfa8bc82edd1c1c46fb48a559dbc8538
6
+ metadata.gz: dd5230dcdfc08129cbc36ca6585a1d867a7b9c763a20181f302ecf8c7c607e6ee7432bfa53a09c4e4df29836cc54680b9ba54c18f22ab59bc13b217fab81b823
7
+ data.tar.gz: ebb999113f8a058c3ab48ae594696198ed4588e327263a6015ab57607cde7e5e9f3e8ecb79f7175fea8c176b0e6b69d1a43378d5fbc542001a0688f89b85c1fa
@@ -37,6 +37,12 @@ module KonoUtils
37
37
  parent_controller.send(:show_custom_polymorphic_path, *rec)
38
38
  end
39
39
 
40
+ def show(&block)
41
+ ActiveSupport::Notifications.instrument "kono_utils_bootstrap_view4.#{self.class.name.underscore.gsub("/", ".")}", this: :data do
42
+ super
43
+ end
44
+ end
45
+
40
46
  ##
41
47
  # Registra il contenuto con una chiave, e lo renderizza poi dove è più necessario
42
48
  # @param [String] name
@@ -4,6 +4,11 @@ module KonoUtils
4
4
  module Index # namespace
5
5
  class RowButtons < Base # class
6
6
 
7
+ ##
8
+ # Restituisce la policy per la riga, non viene instanziata più volte per oggetto
9
+ def cached_policy
10
+ @_cached_policy ||= policy(model)
11
+ end
7
12
  end
8
13
  end
9
14
  end
@@ -2,7 +2,7 @@
2
2
  <thead>
3
3
  <tr>
4
4
  <% columns_to_show.each do |c| %>
5
- <th><%= form.object.class.human_attribute_name(c.name) %></th>
5
+ <th><%= base_class.human_attribute_name(c.name) %></th>
6
6
  <% end %>
7
7
  <th></th>
8
8
  </tr>
@@ -1,3 +1,3 @@
1
- <%= concept("cell/buttons/show", model) if policy(model).show? %>
2
- <%= concept("cell/buttons/edit", model) if policy(model).edit? %>
3
- <%= concept("cell/buttons/delete", model) if policy(model).destroy? %>
1
+ <%= concept("cell/buttons/show", model) if cached_policy.show? %>
2
+ <%= concept("cell/buttons/edit", model) if cached_policy.edit? %>
3
+ <%= concept("cell/buttons/delete", model) if cached_policy.destroy? %>
@@ -14,6 +14,7 @@ module KonoUtilsBootstrapView4
14
14
  autoload :Engine
15
15
  autoload :PaginateProxer
16
16
  autoload :SearchFormBuilder
17
+ autoload :ConceptCacher
17
18
  autoload :VERSION
18
19
 
19
20
  class << self
@@ -14,26 +14,16 @@ module KonoUtilsBootstrapView4
14
14
  end
15
15
 
16
16
  def concept_ns(view)
17
- @_memo_concept ||= {}
18
17
  ns = "#{tableize(self.name)}/#{view}"
19
-
20
- unless @_memo_concept.key?(ns)
18
+ KonoUtilsBootstrapView4.configuration.concept_cacher.get(ns) do |cache|
21
19
  if safe_constantize(ns.camelize)
22
20
  KonoUtilsBootstrapView4.configuration.logger.info { "TROVATA CLASSE PER : #{ns.camelize} --->>>" }
23
- @_memo_concept[ns] = ns
21
+ cache.store(ns, ns)
24
22
  else
25
- @_memo_concept[ns] = false
23
+ KonoUtilsBootstrapView4.configuration.logger.debug { "CLASSE OVERRIDE NON TROVATA PER : #{ns.camelize}" }
24
+ cache.store(ns, "kono_utils/object/#{view}")
26
25
  end
27
26
  end
28
-
29
- if @_memo_concept[ns]
30
- return @_memo_concept[ns]
31
- else
32
- KonoUtilsBootstrapView4.configuration.logger.debug { "CLASSE OVERRIDE NON TROVATA PER : #{ns.camelize}" }
33
-
34
- "kono_utils/object/#{view}"
35
- end
36
-
37
27
  end
38
28
 
39
29
  ##
@@ -0,0 +1,37 @@
1
+ module KonoUtilsBootstrapView4
2
+ ##
3
+ # PORO per l'esecuzione della cache a livello di istanza applicazione dei nomi di classe da utilizzare per i vari
4
+ # componenti dei modelli
5
+ class ConceptCacher
6
+ #@return [Hash]
7
+ attr_reader :_cache
8
+
9
+ def initialize
10
+ @_cache = {}
11
+ end
12
+
13
+ def clear
14
+ @_cache = {}
15
+ end
16
+
17
+ ##
18
+ # Ritorna il valore cachato, se non è presente, allora verrà dato in pasto allo yield l'istanza di cache, e sarà
19
+ # chi la utilizzerà che si occuperà di salvare o meno il dato richiamato il metodo store passando il relativo valore da
20
+ # salvare
21
+ # @param [String] key
22
+ # @return [Object] Cached result
23
+ # @yieldparam [KonoUtilsBootstrapView4::ConceptCacher]
24
+ def get(key)
25
+ return @_cache[key] if @_cache.key?(key)
26
+ yield(self)
27
+ @_cache[key]
28
+ end
29
+
30
+ ##
31
+ # Store del valore
32
+ def store(key, value)
33
+ @_cache[key] = value
34
+ end
35
+
36
+ end
37
+ end
@@ -4,8 +4,23 @@ class KonoUtilsBootstrapView4::Configuration
4
4
  #@return [ActiveSupport::TaggedLogging] log di kono utils bootstrap, default estende quello di rails
5
5
  attr_reader :logger
6
6
 
7
+ ##
8
+ # Se attivo, abilitiamo le metriche con un un ActiveSupport::Notifications.instrument
9
+ # durante la show della cella
10
+ #@return [Boolean]
11
+ attr_accessor :cell_metrics
12
+
13
+ ##
14
+ # Cache delle classi del concept
15
+ # Nell'inizializzazione di rails aggiungiamo un ascoltatore alla cartella standard dei concepts per
16
+ # controllare se i files sono stati modificati, nel caso puliamo completamente la cartella
17
+ attr_reader :concept_cacher
18
+
7
19
  def initialize
8
20
  @moment_js_locales = I18n.available_locales
21
+ @concept_cacher = KonoUtilsBootstrapView4::ConceptCacher.new
22
+
23
+ @cell_metrics = false
9
24
  # inizializzo logger, come quello che mi verrebbe passato
10
25
  self.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))
11
26
  end
@@ -34,6 +34,21 @@ module KonoUtilsBootstrapView4
34
34
  end
35
35
  end
36
36
 
37
+ initializer 'kono_utils_bootstrap_view4.append_instrumentation', :group => :all do |app|
38
+ if KonoUtilsBootstrapView4.configuration.cell_metrics
39
+ app.config.after_initialize do
40
+ ActiveSupport::Notifications.subscribe /kono_utils_bootstrap_view4/ do |event|
41
+ Rails.logger.info "[KUBV4] #{event.name} - #{event.duration} ms - (#{event.allocations} allocations)"
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ initializer 'kono_utils_bootstrap_view4.configure_auto_clear_concept_cache', :group => :all do |app|
48
+ app.reloader.to_prepare do
49
+ KonoUtilsBootstrapView4.configuration.concept_cacher.clear
50
+ end
51
+ end
37
52
  ##
38
53
  # Abbiamo rimosso possibili JS, lasciamo per documentazione
39
54
  initializer 'kono_utils_bootstrap_view4.append_cell_assets', :group => :all do |app|
@@ -51,7 +66,6 @@ module KonoUtilsBootstrapView4
51
66
  end
52
67
  end
53
68
 
54
-
55
69
  Rails.logger.warn { "config.assets.initialize_on_precompile should be true" } unless app.config.assets.initialize_on_precompile == true
56
70
  end
57
71
 
@@ -1,3 +1,3 @@
1
1
  module KonoUtilsBootstrapView4
2
- VERSION = '0.2.2'
2
+ VERSION = '0.3.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kono_utils_bootstrap_view4
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marino Bonetti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-04 00:00:00.000000000 Z
11
+ date: 2021-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -350,6 +350,7 @@ files:
350
350
  - lib/kono_utils_bootstrap_view4/application_icon_helper.rb
351
351
  - lib/kono_utils_bootstrap_view4/base_class_concept_ns.rb
352
352
  - lib/kono_utils_bootstrap_view4/base_search.rb
353
+ - lib/kono_utils_bootstrap_view4/concept_cacher.rb
353
354
  - lib/kono_utils_bootstrap_view4/configuration.rb
354
355
  - lib/kono_utils_bootstrap_view4/editable_field.rb
355
356
  - lib/kono_utils_bootstrap_view4/engine.rb