wallaby-view 0.1.3 → 0.1.7

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: e9f47755d845bd5adf4199a5d7e11a50788f1505fdf8c786a447252e8fa0ac29
4
- data.tar.gz: 4d953c4142e42b2341bf26c55b0d2ad84683c73f95bc526867d2091db3eb6ed1
3
+ metadata.gz: c7144207990b4071d9aa101d8a2bbee5b282264bd896768f5b4a0640d8eba14f
4
+ data.tar.gz: f8190dfba431bafbf38eb6c23cffb17932c6b223e7d52840c0846ddad2a654b3
5
5
  SHA512:
6
- metadata.gz: 3a5e064cda03c29e6ce17b45e9b945e17bde7d9cb8c091106143624d9b997459ce015d44d07d9e0eb02d540fa05b7a307838c8208d382a021a3ea8eb45dc9ab3
7
- data.tar.gz: af47857fa027f84384740f04b5e529e00397e477f493905456d410c0691ea2659f1f1681149376601931253884b9ad3f0f64dd5c3e7d57f4a3864d1576253056
6
+ metadata.gz: c44424c02029a37a88a5a7b090befda949dfb72838ff0dd113fa1efdaacc942b12e1aed6c15fcc5c38ec07e3e0fd8f38cc7c197a79b6bb89835714c7d3bb69ca
7
+ data.tar.gz: 0ed6828b6445a7b9c101a6cd07100d726308536c58e684a2f1d61531c74d62cbb6e0a8d0dd745d66776d4e912f715d8ecd9fdd065b8bbaf317f5acbb2ead712d
data/README.md CHANGED
@@ -7,11 +7,14 @@
7
7
  [![Test Coverage](https://api.codeclimate.com/v1/badges/d3e924dd70cc12562eab/test_coverage)](https://codeclimate.com/github/wallaby-rails/wallaby-view/test_coverage)
8
8
  [![Inch CI](https://inch-ci.org/github/wallaby-rails/wallaby-view.svg?branch=master)](https://inch-ci.org/github/wallaby-rails/wallaby-view)
9
9
 
10
- `Wallaby::View` is a Ruby gem that extends Rails layout/template/partial inheritance chain to allow searching layout/template/partial using theme name and action name.
10
+ **Wallaby::View** extends Rails template/partial inheritance chain to be able to:
11
+
12
+ - organize partials in `#{controller_path}/#{action}` fashion on top of Rails' controller fashion by extending Rails' [\_prefixes](https://github.com/rails/rails/blob/master/actionview/lib/action_view/view_paths.rb#L90).
13
+ - configure the theme (a set of layout/templates/partials starting with the theme prefix).
11
14
 
12
15
  ## Install
13
16
 
14
- Add `Wallaby::View` to `Gemfile`.
17
+ Add **Wallaby::View** to `Gemfile`.
15
18
 
16
19
  ```ruby
17
20
  gem 'wallaby-view'
@@ -23,7 +26,7 @@ And re-bundle.
23
26
  bundle install
24
27
  ```
25
28
 
26
- Include `Wallaby::View` in the target controller (e.g. `ApplicationController`):
29
+ Include **Wallaby::View** in the controller (e.g. **ApplicationController**):
27
30
 
28
31
  ```ruby
29
32
  # app/controllers/application_controller
@@ -43,18 +46,18 @@ class ApplicationController < ActionController::Base
43
46
  end
44
47
 
45
48
  # app/controllers/admin/application_controller
46
- class Admin::ApplicationController < ApplicationController
49
+ class Admin::ApplicationController < ::ApplicationController
47
50
  self.theme_name = 'secure'
48
51
  end
49
52
 
50
53
  # app/controllers/admin/users_controller
51
54
  class Admin::UsersController < Admin::ApplicationController
52
55
  self.theme_name = 'account'
53
- self.options = { mapping_actions: { edit: 'form' } }
56
+ self.prefix_options = { edit: 'form' }
54
57
  end
55
58
  ```
56
59
 
57
- By using `Wallaby::View`, the lookup folder order of `admin/application#edit` action becomes:
60
+ By using **Wallaby::View**, a template/partial for the `admin/application#edit` action will be looked up in the following folder order from top to bottom:
58
61
 
59
62
  - app/views/admin/application/edit
60
63
  - app/views/admin/application
@@ -63,31 +66,63 @@ By using `Wallaby::View`, the lookup folder order of `admin/application#edit` ac
63
66
  - app/views/application/edit
64
67
  - app/views/application
65
68
 
66
- Then it is possible to create a relative partial in one of the above folder for `admin/application#edit` action, for instance:
69
+ Then it depends on how a relative partial should be shared, the partial can be created in one of the above folders.
70
+ For example, if a `form` partial is designed specifically for `admin/application#edit` action, then it can be created in `admin/application/edit` folder as below:
71
+
72
+ ```erb
73
+ <%# app/views/admin/application/edit/_form.html.erb %>
74
+ a form for `admin/application#edit`
75
+ ```
76
+
77
+ Then in the `admin/application#edit` template, rendering the relative `form` partial will result in using the above partial.
67
78
 
68
79
  ```erb
69
80
  <%# app/views/admin/application/edit.html.erb %>
70
81
  <% render 'form' %>
71
-
72
- <%# app/views/secure/edit/_form.html.erb %>
73
- This form partial is under `secure` theme and `edit` action,
74
- but still can be rendered by `admin/application#edit` action
75
82
  ```
76
83
 
77
- For `admin/users#edit` action, since `mapping_actions` option is set, `edit` will be mapped to `form`.
84
+ For `admin/users#edit` action, since `prefix_options` option is set, `edit` will be mapped to `form`, and `form` will be added to the prefixes as well.
78
85
  Therefore, the lookup folder order of `admin/users#edit` becomes:
79
86
 
87
+ - app/views/admin/users/edit
80
88
  - app/views/admin/users/form
81
89
  - app/views/admin/users
90
+ - app/views/secure/edit
82
91
  - app/views/secure/form
83
92
  - app/views/secure
93
+ - app/views/admin/application/edit
84
94
  - app/views/admin/application/form
85
95
  - app/views/admin/application
96
+ - app/views/secure/edit
86
97
  - app/views/secure/form
87
98
  - app/views/secure
99
+ - app/views/application/edit
88
100
  - app/views/application/form
89
101
  - app/views/application
90
102
 
103
+ ## Advanced Usage
104
+
105
+ It is possible to override the `_prefixes` method to make more changes to the prefixes before suffixing them with the action name:
106
+
107
+ ```ruby
108
+ class ApplicationController < ActionController::Base
109
+ include Wallaby::View
110
+
111
+ def _prefixes
112
+ super do |prefixes|
113
+ prefixes << 'last_resort'
114
+ end
115
+ end
116
+ end
117
+ ```
118
+
119
+ Then the lookup folder order of e.g. `application#edit` becomes:
120
+
121
+ - app/views/application/edit
122
+ - app/views/application
123
+ - app/views/last_resort/edit
124
+ - app/views/last_resort
125
+
91
126
  ## Documentation
92
127
 
93
128
  - [API Reference](https://www.rubydoc.info/gems/wallaby-view)
@@ -7,17 +7,22 @@ module Wallaby
7
7
  module ActionViewable
8
8
  extend ActiveSupport::Concern
9
9
 
10
- class << self
11
- # @!attribute prefix_options
12
- # It stores the options for {#_prefixes}. It can inherit options from superclass.
13
- # @return [Hash] prefix options
14
- end
15
-
16
- class_methods do
10
+ module ClassMethods # :nodoc:
11
+ # @!attribute [w] prefix_options
17
12
  attr_writer :prefix_options
18
13
 
14
+ # @!attribute [r] prefix_options
15
+ # It stores the options for {#_prefixes #_prefixes}. It can inherit options from superclass.
16
+ # @return [Hash] prefix options
19
17
  def prefix_options
20
- @prefix_options ||= superclass.try(:prefix_options)
18
+ @prefix_options ||= superclass.try(:prefix_options).try(:dup) || {}
19
+ end
20
+
21
+ # Add prefix options
22
+ # @param new_options [Hash]
23
+ # @return [Hash] merged prefix options
24
+ def merge_prefix_options(new_options)
25
+ prefix_options.merge!(new_options)
21
26
  end
22
27
  end
23
28
 
@@ -33,7 +38,7 @@ module Wallaby
33
38
  # Override
34
39
  # {https://github.com/rails/rails/blob/master/actionview/lib/action_view/view_paths.rb#L97 lookup_context}
35
40
  # to provide caching for template/partial lookup.
36
- # @return {Wallaby::View::CustomLookupContext}
41
+ # @return {CustomLookupContext}
37
42
 
38
43
  # (see #lookup_context)
39
44
  def override_lookup_context
@@ -43,12 +48,12 @@ module Wallaby
43
48
 
44
49
  # @!method _prefixes(prefixes: nil, controller_path: nil, action_name: nil, themes: nil, options: nil, &block)
45
50
  # Override {https://github.com/rails/rails/blob/master/actionview/lib/action_view/view_paths.rb#L90 _prefixes}
46
- # to allow other (e.g. {Wallaby::View::CustomPrefixes#action_name},
47
- # {Wallaby::View::CustomPrefixes#themes}) to be added to the prefixes list.
51
+ # to allow other (e.g. {CustomPrefixes#action_name},
52
+ # {CustomPrefixes#themes}) to be added to the prefixes list.
48
53
  # @param prefixes [Array<String>] the base prefixes
49
54
  # @param action_name [String] the action name to add to the prefixes list
50
55
  # @param themes [String] the theme name to add to the prefixes list
51
- # @param options [Hash] the options for {Wallaby::View::CustomPrefixes}
56
+ # @param options [Hash] the options that {CustomPrefixes} accepts
52
57
  # @return [Array<String>]
53
58
 
54
59
  # (see #_prefixes)
@@ -63,7 +68,7 @@ module Wallaby
63
68
  prefixes: prefixes || original_prefixes,
64
69
  action_name: action_name || params[:action],
65
70
  themes: themes || self.class.themes,
66
- options: options || self.class.prefix_options, &block
71
+ options: self.class.prefix_options.merge(options || {}), &block
67
72
  )
68
73
  end
69
74
  end
@@ -4,11 +4,11 @@ module Wallaby
4
4
  module View
5
5
  # Custom lookup context to cache lookup results.
6
6
  class CustomLookupContext < ::ActionView::LookupContext
7
- # Convert an ActionView::LookupContext instance into {Wallaby::View::CustomLookupContext}
7
+ # Convert an ActionView::LookupContext instance into {CustomLookupContext}
8
8
  # @param lookup_context [ActionView::LookupContext]
9
9
  # @param details [Hash]
10
10
  # @param prefixes [Array<String>]
11
- # @return [Wallaby::View::CustomLookupContext]
11
+ # @return [CustomLookupContext]
12
12
  def self.convert(lookup_context, details: nil, prefixes: nil)
13
13
  return lookup_context if lookup_context.is_a? self
14
14
 
@@ -7,17 +7,20 @@ module Wallaby
7
7
  # @!attribute [r] prefixes
8
8
  # Base prefixes to extend
9
9
  # @return [Array<String>]
10
- # @see Wallaby::View::ActionViewable#_prefixes
10
+ # @see ActionViewable#_prefixes
11
11
  attr_reader :prefixes
12
+
12
13
  # @!attribute [r] action_name
13
14
  # Action name to be added
14
15
  # @return [String]
15
16
  attr_reader :action_name
17
+
16
18
  # @!attribute [r] themes
17
19
  # Themes to be inserted
18
20
  # @return [Array<Hash>]
19
- # @see Wallaby::View::Themeable#.themes
21
+ # @see Themeable#.themes
20
22
  attr_reader :themes
23
+
21
24
  # @!attribute [r] options
22
25
  # Options for extending the given prefixes
23
26
  # @return [Hash]
@@ -28,6 +31,7 @@ module Wallaby
28
31
  # Wallaby::View::CustomPrefixes.execute(
29
32
  # prefixes: ['users', 'application'], action_name: 'index'
30
33
  # )
34
+ #
31
35
  # # => [
32
36
  # # 'users/index',
33
37
  # # 'users',
@@ -39,6 +43,7 @@ module Wallaby
39
43
  # prefixes: ['users', 'application'], action_name: 'index',
40
44
  # themes: [{ theme_name: 'secure', theme_path: 'users' }]
41
45
  # )
46
+ #
42
47
  # # => [
43
48
  # # 'users/index',
44
49
  # # 'users',
@@ -50,8 +55,9 @@ module Wallaby
50
55
  # @example To extend given prefixes with mapped action:
51
56
  # Wallaby::View::CustomPrefixes.execute(
52
57
  # prefixes: ['users', 'application'], action_name: 'edit',
53
- # options: { mapping_actions: { 'edit' => 'form' } }
58
+ # options: { 'edit' => 'form' }
54
59
  # )
60
+ #
55
61
  # # => [
56
62
  # # 'users/form',
57
63
  # # 'users',
@@ -88,35 +94,37 @@ module Wallaby
88
94
  # @return [Array<String>]
89
95
  def execute(&block)
90
96
  new_prefixes(&block).each_with_object([]) do |prefix, array|
91
- # Extend the prefix with action name suffix
92
- array << "#{prefix}/#{suffix}" << prefix
97
+ # Extend the prefix with actions
98
+ actions.each { |action| array << "#{prefix}/#{action}" }
99
+ array << prefix
93
100
  end
94
101
  end
95
102
 
96
- private
103
+ protected
97
104
 
105
+ # @yield [array] To allow the array to be further modified
106
+ # @yieldparam [Array<String>] array
98
107
  # @return [Array<String>]
99
108
  def new_prefixes
100
109
  prefixes.dup.try do |array|
101
110
  insert_themes_into array
102
111
 
103
112
  # Be able to change the array in overriding methods
104
- # in {Wallaby::View::ActionViewable#override_prefixes}
113
+ # in {ActionViewable#override_prefixes}
105
114
  new_array = yield array if block_given?
106
115
 
107
- # If the above block doesn't return an array,
108
- # it's assumed that `array` is changed
116
+ # If the above block doesn't return a new array, it returns the old `array`.
109
117
  new_array.is_a?(Array) ? new_array : array
110
118
  end
111
119
  end
112
120
 
113
- # Action name suffix
114
- # @return [Hash]
115
- def suffix
116
- @suffix ||= mapped_action_name || action_name
121
+ # @return [Array<String>] Action names
122
+ def actions
123
+ @actions ||= [action_name, *mapped_action_name].compact
117
124
  end
118
125
 
119
- # Insert theme name into the prefixes
126
+ # Insert theme names into the prefixes
127
+ # @param [Array<String>] array
120
128
  def insert_themes_into(array)
121
129
  themes.each do |theme|
122
130
  index = array.index theme[:theme_path]
@@ -125,9 +133,9 @@ module Wallaby
125
133
  end
126
134
 
127
135
  # Map the {#action_name} using `options[:mapping_actions]`
128
- # @return [String, nil] mapped action name
136
+ # @return [Array<String>] mapped action name
129
137
  def mapped_action_name
130
- options[:mapping_actions].try(:[], action_name)
138
+ Array((options[:mapping_actions] || options).try(:[], action_name))
131
139
  end
132
140
  end
133
141
  end
@@ -6,8 +6,7 @@ module Wallaby
6
6
  module Themeable
7
7
  extend ActiveSupport::Concern
8
8
 
9
- class << self
10
- # @!attribute theme_name
9
+ module ClassMethods # :nodoc:
11
10
  # The theme name is used to specify the layout and prefixes
12
11
  # so that a set of theme implementation for the frontend (html/css/javascript)
13
12
  # can be applied
@@ -27,6 +26,7 @@ module Wallaby
27
26
  #
28
27
  # def index
29
28
  # _prefixes
29
+ #
30
30
  # # =>
31
31
  # # [
32
32
  # # 'admin/application/index',
@@ -37,8 +37,22 @@ module Wallaby
37
37
  # # 'application'
38
38
  # # ]
39
39
  # end
40
- # end
40
+ # end
41
+ # @param theme_name [String]
42
+ # @param options [Hash] same options as Rails'
43
+ # {https://api.rubyonrails.org/classes/ActionView/Layouts/ClassMethods.html#method-i-layout
44
+ # layout} method
45
+ def theme_name=(theme_name, **options, &block)
46
+ layout theme_name, options, &block
47
+ @theme_path = theme_name && controller_path || nil
48
+ @theme_name = theme_name || nil
49
+ end
50
+
51
+ # @!attribute [r] theme_name
41
52
  # @return [String, nil] theme name
53
+ def theme_name
54
+ defined?(@theme_name) && @theme_name || superclass.try(:theme_name)
55
+ end
42
56
 
43
57
  # @!attribute [r] theme
44
58
  # @example Once theme is set, the metadata will be set as well:
@@ -46,6 +60,7 @@ module Wallaby
46
60
  # self.theme_name = 'secure'
47
61
  #
48
62
  # self.theme
63
+ #
49
64
  # # =>
50
65
  # # {
51
66
  # # theme_name: 'secure',
@@ -53,25 +68,6 @@ module Wallaby
53
68
  # # }
54
69
  # end
55
70
  # @return [Hash] theme metadata
56
-
57
- # @!attribute [r] themes
58
- # @return [Array<Hash>] a list of {.theme} metadata
59
- end
60
-
61
- class_methods do
62
- # (see .theme_name)
63
- def theme_name=(theme_name, **options, &block)
64
- layout theme_name, options, &block
65
- @theme_path = theme_name && controller_path || nil
66
- @theme_name = theme_name || nil
67
- end
68
-
69
- # (see .theme_name)
70
- def theme_name
71
- defined?(@theme_name) && @theme_name || superclass.try(:theme_name)
72
- end
73
-
74
- # (see .theme)
75
71
  def theme
76
72
  defined?(@theme_name) && @theme_name && {
77
73
  theme_name: @theme_name,
@@ -79,7 +75,8 @@ module Wallaby
79
75
  } || superclass.try(:theme)
80
76
  end
81
77
 
82
- # (see .themes)
78
+ # @!attribute [r] themes
79
+ # @return [Array<Hash>] a list of {#theme} metadata
83
80
  def themes
84
81
  list = superclass.try(:themes) || []
85
82
  list.prepend theme if defined?(@theme_name) && @theme_name
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Wallaby
4
4
  module View
5
- VERSION = '0.1.3' # :nodoc:
5
+ VERSION = '0.1.7' # :nodoc:
6
6
  end
7
7
  end
data/lib/wallaby/view.rb CHANGED
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'request_store'
4
- require 'action_view/partial_renderer'
5
-
6
3
  require 'wallaby/view/version'
7
4
  require 'wallaby/view/action_viewable'
8
5
  require 'wallaby/view/themeable'
@@ -11,35 +8,18 @@ require 'wallaby/view/custom_prefixes'
11
8
 
12
9
  module Wallaby # :nodoc:
13
10
  # To extend Rails prefixes and improve lookup performance.
11
+ #
12
+ # For example, include {Wallaby::View} module in the controller:
13
+ #
14
+ # ```
15
+ # # app/controllers/application_controller
16
+ # class ApplicationController < ActionController::Base
17
+ # include Wallaby::View
18
+ # end
19
+ # ```
14
20
  module View
15
21
  extend ActiveSupport::Concern
16
22
 
17
- # This is the method executed when this module is included by other modules.
18
- #
19
- # Basically, it renames the methods so that it is possible
20
- # to access the original methods after overriding them:
21
- #
22
- # 1. Rename the following original methods:
23
- #
24
- # - rename {https://github.com/rails/rails/blob/master/actionview/lib/action_view/view_paths.rb#L97
25
- # lookup_context} to {Wallaby::View::ActionViewable#original_lookup_context original_lookup_context}
26
- # - rename {https://github.com/rails/rails/blob/master/actionview/lib/action_view/view_paths.rb#L90 _prefixes}
27
- # to {Wallaby::View::ActionViewable#original_prefixes original_prefixes}
28
- #
29
- # 2. Override the original methods:
30
- #
31
- # - rename {Wallaby::View::ActionViewable#override_lookup_context override_lookup_context}
32
- # to {Wallaby::View::ActionViewable#lookup_context lookup_context}
33
- # - rename {Wallaby::View::ActionViewable#override_prefixes override_prefixes}
34
- # to {Wallaby::View::ActionViewable#\_prefixes \_prefixes}
35
- # @param mod [Module]
36
- def self.included(mod)
37
- mod.send :alias_method, :original_lookup_context, :lookup_context
38
- mod.send :alias_method, :original_prefixes, :_prefixes
39
- mod.send :alias_method, :lookup_context, :override_lookup_context
40
- mod.send :alias_method, :_prefixes, :override_prefixes
41
- end
42
-
43
23
  COMMA = ',' # :nodoc:
44
24
  EMPTY_STRING = '' # :nodoc:
45
25
  DOT_RB = '.rb' # :nodoc:
@@ -49,5 +29,14 @@ module Wallaby # :nodoc:
49
29
 
50
30
  include ActionViewable
51
31
  include Themeable
32
+
33
+ included do
34
+ # NOTE: Basically, it renames the methods so that it is possible
35
+ # to access the original methods after overriding them:
36
+ alias_method :original_lookup_context, :lookup_context
37
+ alias_method :original_prefixes, :_prefixes
38
+ alias_method :lookup_context, :override_lookup_context
39
+ alias_method :_prefixes, :override_prefixes
40
+ end
52
41
  end
53
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wallaby-view
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tian Chen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-16 00:00:00.000000000 Z
11
+ date: 2022-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -25,13 +25,13 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.2.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: request_store
28
+ name: github-markup
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
- type: :runtime
34
+ type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
@@ -39,7 +39,35 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: minitest-rails
42
+ name: redcarpet
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - ">="
@@ -66,6 +94,20 @@ dependencies:
66
94
  - - ">="
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
69
111
  description: Wallaby View to extend Rails layout/template/partial inheritance chain.
70
112
  email:
71
113
  - me@tian.im
@@ -75,7 +117,6 @@ extra_rdoc_files: []
75
117
  files:
76
118
  - LICENSE
77
119
  - README.md
78
- - lib/action_view/partial_renderer.rb
79
120
  - lib/wallaby/view.rb
80
121
  - lib/wallaby/view/action_viewable.rb
81
122
  - lib/wallaby/view/custom_lookup_context.rb
@@ -86,10 +127,11 @@ homepage: https://github.com/wallaby-rails/wallaby-view
86
127
  licenses:
87
128
  - MIT
88
129
  metadata:
130
+ rubygems_mfa_required: 'true'
89
131
  homepage_uri: https://github.com/wallaby-rails/wallaby-view
90
132
  source_code_uri: https://github.com/wallaby-rails/wallaby-view
91
133
  changelog_uri: https://github.com/wallaby-rails/wallaby-view/blob/master/CHANGELOG.md
92
- post_install_message:
134
+ post_install_message:
93
135
  rdoc_options: []
94
136
  require_paths:
95
137
  - lib
@@ -104,8 +146,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
146
  - !ruby/object:Gem::Version
105
147
  version: '0'
106
148
  requirements: []
107
- rubygems_version: 3.0.3
108
- signing_key:
149
+ rubygems_version: 3.1.2
150
+ signing_key:
109
151
  specification_version: 4
110
152
  summary: Wallaby View to extend Rails layout/template/partial inheritance chain.
111
153
  test_files: []
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActionView # :nodoc:
4
- # Re-open ActionView::PartialRenderer to disable logging for partials
5
- # that have been rendered for more than once.
6
- #
7
- # Every log requires the IO. Reducing the logs will dramatically improve the performance.
8
- # @see #instrument
9
- class PartialRenderer
10
- protected
11
-
12
- # @!method original_instrument(name, **options, &block)
13
- # Original method of {#instrument}
14
- # @param name [String]
15
- # @param options [Hash]
16
- # @yield [payload]
17
- # @yieldparam payload [Hash] payload object for instrument
18
- # @return [ActionView::OutputBuffer]
19
- alias original_instrument instrument
20
-
21
- # Logs for partial rendering. Only one log will be printed
22
- # even if a partial has been rendered for more than once.
23
- #
24
- # To disable this feature and see all logs,
25
- # set `ENV['ALL_PARTIAL_LOGS']` to `true`
26
- # @param name [String]
27
- # @param options [Hash]
28
- # @yield [payload]
29
- # @yieldparam payload [Hash] payload object for instrument
30
- # @return [ActionView::OutputBuffer]
31
- def instrument(name, **options, &block)
32
- identifier = options[:identifier] || @template.try(:identifier) || @path
33
- instrumented = RequestStore.store[:instrumented] ||= {}
34
-
35
- return yield({}) if !ENV['ALL_PARTIAL_LOGS'] && instrumented[identifier]
36
-
37
- original_instrument(name, **options, &block).tap do
38
- instrumented[identifier] ||= true
39
- end
40
- end
41
- end
42
- end