super 0.0.7 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +0 -6
  3. data/CONTRIBUTING.md +56 -0
  4. data/README.md +49 -61
  5. data/Rakefile +16 -14
  6. data/app/assets/javascripts/super/application.js +297 -97
  7. data/app/assets/stylesheets/super/application.css +5600 -0
  8. data/app/controllers/super/application_controller.rb +20 -14
  9. data/app/helpers/super/form_builder_helper.rb +25 -0
  10. data/app/views/layouts/super/application.html.erb +23 -9
  11. data/app/views/super/application/{_super_schema_display_actions.html.erb → _display_actions.html.erb} +0 -0
  12. data/app/views/super/application/{_super_schema_display_index.html.erb → _display_index.html.erb} +6 -6
  13. data/app/views/super/application/_display_rich_text.html.erb +1 -0
  14. data/app/views/super/application/_display_show.html.erb +8 -0
  15. data/app/views/super/application/_filter.html.erb +5 -13
  16. data/app/views/super/application/_filter_type_select.html.erb +9 -19
  17. data/app/views/super/application/_filter_type_text.html.erb +7 -11
  18. data/app/views/super/application/_filter_type_timestamp.html.erb +6 -17
  19. data/app/views/super/application/_form.html.erb +15 -0
  20. data/app/views/super/application/_form_field__destroy.html.erb +1 -9
  21. data/app/views/super/application/_form_field_checkbox.html.erb +1 -0
  22. data/app/views/super/application/_form_field_rich_text_area.html.erb +1 -0
  23. data/app/views/super/application/_form_field_select.html.erb +1 -23
  24. data/app/views/super/application/_form_field_text.html.erb +1 -13
  25. data/app/views/super/application/{_super_layout.html.erb → _layout.html.erb} +7 -7
  26. data/app/views/super/application/{_super_pagination.html.erb → _pagination.html.erb} +1 -1
  27. data/app/views/super/application/{_super_panel.html.erb → _panel.html.erb} +2 -2
  28. data/app/views/super/application/_query.html.erb +18 -0
  29. data/app/views/super/application/_sort.html.erb +18 -0
  30. data/app/views/super/application/_sort_expression.html.erb +25 -0
  31. data/app/views/super/application/edit.html.erb +1 -0
  32. data/app/views/super/application/index.html.erb +1 -0
  33. data/app/views/super/application/new.html.erb +1 -0
  34. data/app/views/super/application/show.html.erb +1 -0
  35. data/app/views/super/feather/README.md +1 -0
  36. data/app/views/super/feather/_x.html +15 -0
  37. data/config/routes.rb +2 -0
  38. data/docs/cheat.md +8 -8
  39. data/frontend/super-frontend/dist/application.css +5600 -0
  40. data/frontend/super-frontend/dist/application.js +297 -97
  41. data/lib/generators/super/action_text/USAGE +23 -0
  42. data/lib/generators/super/action_text/action_text_generator.rb +32 -0
  43. data/lib/generators/super/action_text/templates/pack_super_action_text.css +23 -0
  44. data/lib/generators/super/action_text/templates/pack_super_action_text.js +4 -0
  45. data/lib/generators/super/install/install_generator.rb +18 -7
  46. data/lib/generators/super/install/templates/base_controller.rb.tt +9 -1
  47. data/lib/generators/super/install/templates/initializer.rb.tt +9 -2
  48. data/lib/generators/super/resource/resource_generator.rb +107 -30
  49. data/lib/generators/super/resource/templates/resources_controller.rb.tt +3 -39
  50. data/lib/generators/super/webpacker/USAGE +5 -4
  51. data/lib/generators/super/webpacker/webpacker_generator.rb +5 -2
  52. data/lib/super.rb +17 -0
  53. data/lib/super/action_inquirer.rb +2 -0
  54. data/lib/super/assets.rb +114 -38
  55. data/lib/super/client_error.rb +2 -0
  56. data/lib/super/compatibility.rb +2 -0
  57. data/lib/super/configuration.rb +16 -79
  58. data/lib/super/controls.rb +11 -25
  59. data/lib/super/controls/optional.rb +75 -16
  60. data/lib/super/controls/steps.rb +36 -58
  61. data/lib/super/controls/view.rb +55 -0
  62. data/lib/super/display.rb +88 -0
  63. data/lib/super/display/guesser.rb +36 -0
  64. data/lib/super/display/schema_types.rb +80 -78
  65. data/lib/super/engine.rb +5 -1
  66. data/lib/super/error.rb +21 -0
  67. data/lib/super/filter.rb +7 -130
  68. data/lib/super/filter/form_object.rb +94 -0
  69. data/lib/super/filter/guesser.rb +32 -0
  70. data/lib/super/filter/operator.rb +2 -0
  71. data/lib/super/filter/schema_types.rb +3 -7
  72. data/lib/super/form.rb +29 -40
  73. data/lib/super/form/builder.rb +206 -0
  74. data/lib/super/form/guesser.rb +29 -0
  75. data/lib/super/form/inline_errors.rb +28 -0
  76. data/lib/super/form/schema_types.rb +31 -29
  77. data/lib/super/form/strong_params.rb +31 -0
  78. data/lib/super/layout.rb +3 -1
  79. data/lib/super/link.rb +7 -0
  80. data/lib/super/navigation/automatic.rb +4 -2
  81. data/lib/super/pagination.rb +13 -17
  82. data/lib/super/panel.rb +3 -1
  83. data/lib/super/partial.rb +2 -0
  84. data/lib/super/partial/resolving.rb +2 -0
  85. data/lib/super/plugin.rb +2 -0
  86. data/lib/super/query/form_object.rb +48 -0
  87. data/lib/super/schema.rb +2 -25
  88. data/lib/super/schema/common.rb +27 -0
  89. data/lib/super/schema/guesser.rb +79 -0
  90. data/lib/super/sort.rb +110 -0
  91. data/lib/super/useful/builder.rb +25 -0
  92. data/lib/super/useful/enum.rb +63 -0
  93. data/lib/super/version.rb +3 -1
  94. data/lib/super/view_helper.rb +2 -19
  95. metadata +63 -34
  96. data/app/views/super/application/_form_inline_errors.html.erb +0 -10
  97. data/app/views/super/application/_super_schema_display_show.html.erb +0 -8
  98. data/app/views/super/application/_super_schema_form.html.erb +0 -15
  99. data/docs/README.md +0 -6
  100. data/docs/faq.md +0 -44
  101. data/docs/quick_start.md +0 -45
  102. data/docs/webpacker.md +0 -17
  103. data/docs/yard_customizations.rb +0 -41
  104. data/frontend/super-frontend/build.js +0 -36
  105. data/frontend/super-frontend/package.json +0 -21
  106. data/frontend/super-frontend/postcss.config.js +0 -6
  107. data/frontend/super-frontend/src/javascripts/super/application.ts +0 -18
  108. data/frontend/super-frontend/src/javascripts/super/apply_template_controller.ts +0 -19
  109. data/frontend/super-frontend/src/javascripts/super/rails__ujs.d.ts +0 -1
  110. data/frontend/super-frontend/src/javascripts/super/toggle_pending_destruction_controller.ts +0 -15
  111. data/frontend/super-frontend/src/stylesheets/super/application.css +0 -77
  112. data/frontend/super-frontend/tailwind.config.js +0 -15
  113. data/frontend/super-frontend/tsconfig.json +0 -13
  114. data/frontend/super-frontend/yarn.lock +0 -5448
  115. data/lib/super/controls/required.rb +0 -41
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Super
4
+ class Schema
5
+ class Guesser
6
+ def initialize(model:, fields:, type:)
7
+ @model = model
8
+ @fields = fields
9
+ @type = type
10
+ @rejects = []
11
+ end
12
+
13
+ def limit
14
+ @limit = yield
15
+ self
16
+ end
17
+
18
+ def reject(&block)
19
+ @rejects.push(block)
20
+ self
21
+ end
22
+
23
+ def ignore_foreign_keys
24
+ @rejects.push(-> (attribute_name) { is_foreign_key[attribute_name] })
25
+ self
26
+ end
27
+
28
+ def assign_type(&block)
29
+ @assign_type = block
30
+ self
31
+ end
32
+
33
+ def call
34
+ result = sorted_attribute_names
35
+ result = @rejects.reduce(result) do |intermediary_result, rejection_proc|
36
+ intermediary_result.reject(&rejection_proc)
37
+ end
38
+
39
+ result = result.first(@limit) if @limit && @limit != Float::INFINITY
40
+
41
+ result.each do |name|
42
+ @fields[name] = @assign_type.call(name)
43
+ end
44
+ end
45
+
46
+ private
47
+
48
+ def sorted_attribute_names
49
+ @model
50
+ .attribute_names
51
+ .sort_by { |name| sort_weight[name] }
52
+ end
53
+
54
+ def sort_weight
55
+ @sort_weight ||= Hash.new do |hash, name|
56
+ hash[name] =
57
+ case name
58
+ when "id" then 0
59
+ when "title" then 1000
60
+ when "name" then 1300
61
+ when "created_at" then 9500
62
+ when "updated_at" then 9750
63
+ else
64
+ 2000 + hash.size
65
+ end
66
+ end
67
+ end
68
+
69
+ def is_foreign_key
70
+ @is_foreign_key ||=
71
+ @model
72
+ .reflect_on_all_associations
73
+ .select { |a| a.macro == :belongs_to }
74
+ .map { |a| [a.foreign_key, true] }
75
+ .to_h
76
+ end
77
+ end
78
+ end
79
+ end
data/lib/super/sort.rb ADDED
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Super
4
+ module Sort
5
+ class FormObject
6
+ DIRECTIONS = ["asc", "desc"]
7
+
8
+ def initialize(model:, params:, default:, sortable_columns:)
9
+ @model = model
10
+ @params = params.dup
11
+ @default = default
12
+ @sortable_columns = sortable_columns.map(&:to_s)
13
+
14
+ @params.permit!
15
+ end
16
+
17
+ attr_reader :sortable_columns
18
+
19
+ def to_partial_path
20
+ "sort"
21
+ end
22
+
23
+ def exprs
24
+ sanitized_expr_params.map { |ordering| Expression.new(**ordering) }
25
+ end
26
+
27
+ def new_expr
28
+ Expression.new(a: nil, d: :desc)
29
+ end
30
+
31
+ class Expression
32
+ attr_accessor :a # attribute
33
+ attr_accessor :d # direction
34
+
35
+ def initialize(a:, d:)
36
+ @a = a
37
+ @d = d.to_s
38
+ end
39
+
40
+ def with_index(index)
41
+ @index = index
42
+ self
43
+ end
44
+
45
+ # This is for `fields_for` to work
46
+ def id
47
+ @index
48
+ end
49
+
50
+ def persisted?
51
+ false
52
+ end
53
+ end
54
+
55
+ def persisted?
56
+ false
57
+ end
58
+
59
+ def apply_changes(query)
60
+ exprs.each do |expr|
61
+ query = query.order(expr.a => expr.d)
62
+ end
63
+
64
+ query
65
+ end
66
+
67
+ private
68
+
69
+ # Stringifies the values
70
+ def sanitized_expr_params
71
+ seen = {}
72
+ normalized_expr_params
73
+ .each do |p|
74
+ p[:a] = p[:a].presence&.to_s&.strip
75
+ p[:d] = p[:d].presence&.to_s&.strip
76
+ end
77
+ .select { |p| p[:a].present? && DIRECTIONS.include?(p[:d]) }
78
+ .select { |p| @sortable_columns.include?(p[:a]) }
79
+ .select do |p|
80
+ next false if seen.key?(p[:a])
81
+
82
+ seen[p[:a]] = true
83
+ true
84
+ end
85
+ end
86
+
87
+ # Symbolizes the keys
88
+ def normalized_expr_params
89
+ from_params = @params[:exprs]
90
+
91
+ return default_as_query if from_params.nil?
92
+
93
+ if from_params.is_a?(Array)
94
+ return from_params.map(&:to_h).map(&:symbolize_keys)
95
+ end
96
+
97
+ from_params.to_h.values.map(&:symbolize_keys)
98
+ end
99
+
100
+ def default_as_query
101
+ @default.map do |attribute_name, direction|
102
+ {
103
+ a: attribute_name,
104
+ d: direction,
105
+ }
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Super
4
+ module Useful
5
+ module Builder
6
+ def builder(method_name)
7
+ alias_method("original_#{method_name}", method_name)
8
+
9
+ define_method(method_name) do
10
+ send("original_#{method_name}")
11
+ self
12
+ end
13
+ end
14
+
15
+ def builder_with_block(method_name)
16
+ alias_method("original_#{method_name}", method_name)
17
+
18
+ define_method(method_name) do |&block|
19
+ send("original_#{method_name}", &block)
20
+ self
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Super
4
+ module Useful
5
+ class Enum
6
+ def initialize(*choices)
7
+ @choices = choices.flatten.map { |choice| [choice, nil] }.to_h
8
+ end
9
+
10
+ def case(chosen)
11
+ Case.new(@choices, chosen)
12
+ end
13
+
14
+ class Case
15
+ def initialize(choices, chosen)
16
+ if !choices.key?(chosen)
17
+ raise Error::Enum::ImpossibleValue,
18
+ "`#{chosen}` isn't in: #{choices.keys.map(&:inspect).join(", ")}"
19
+ end
20
+
21
+ @choices = choices
22
+ @chosen = chosen
23
+ @whens = {}
24
+ end
25
+
26
+ def when(*keys, &block)
27
+ if !block_given?
28
+ raise Error::ArgumentError, "must receive block"
29
+ end
30
+
31
+ keys.each do |key|
32
+ if !@choices.key?(key)
33
+ raise Error::Enum::ImpossibleValue, "`#{key.inspect}` is not a possibility"
34
+ end
35
+
36
+ @whens[key] = block
37
+ end
38
+
39
+ self
40
+ end
41
+
42
+ def result
43
+ if @choices.size != @whens.size
44
+ missing_keys = @choices.keys - @whens.keys
45
+ raise Error::Enum::UndefinedCase, "Unset cases: #{missing_keys.join(", ")}"
46
+ end
47
+
48
+ @whens[@chosen].call(@value)
49
+ end
50
+
51
+ private
52
+
53
+ def matching_possibilities_and_checks?
54
+ if @whens.size == @choices.size
55
+ return true
56
+ end
57
+
58
+ false
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
data/lib/super/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Super
2
- VERSION = "0.0.7"
4
+ VERSION = "0.0.12"
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Super
2
4
  module ViewHelper
3
5
  module_function
@@ -20,24 +22,5 @@ module Super
20
22
 
21
23
  result.compact.join(" ")
22
24
  end
23
-
24
- def errors_accounting_for_reflections(model_instance, column_or_association)
25
- errable_fields(model_instance, column_or_association)
26
- .flat_map { |field| Compatability.errable_fields(field) }
27
- .flat_map { |field| model_instance.errors.full_messages_for(field) }
28
- .uniq
29
- end
30
-
31
- def errable_fields(model_instance, column_or_association)
32
- column_or_association = column_or_association.to_s
33
- reflection = model_instance.class.reflect_on_association(column_or_association)
34
- reflection ||= model_instance.class.reflections.values.find { |r| r.foreign_key == column_or_association }
35
-
36
- if reflection
37
- [reflection.name.to_s, reflection.foreign_key.to_s]
38
- else
39
- [column_or_association]
40
- end
41
- end
42
25
  end
43
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Ahn
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-16 00:00:00.000000000 Z
11
+ date: 2021-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -198,7 +198,21 @@ dependencies:
198
198
  - - ">="
199
199
  - !ruby/object:Gem::Version
200
200
  version: '0'
201
- description:
201
+ - !ruby/object:Gem::Dependency
202
+ name: simplecov
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ description:
202
216
  email:
203
217
  - engineering@zachahn.com
204
218
  executables: []
@@ -206,6 +220,7 @@ extensions: []
206
220
  extra_rdoc_files: []
207
221
  files:
208
222
  - ".yardopts"
223
+ - CONTRIBUTING.md
209
224
  - LICENSE
210
225
  - README.md
211
226
  - Rakefile
@@ -213,28 +228,34 @@ files:
213
228
  - app/assets/javascripts/super/application.js
214
229
  - app/assets/stylesheets/super/application.css
215
230
  - app/controllers/super/application_controller.rb
231
+ - app/helpers/super/form_builder_helper.rb
216
232
  - app/views/layouts/super/application.html.erb
217
233
  - app/views/super/application/_collection_header.html.erb
234
+ - app/views/super/application/_display_actions.html.erb
235
+ - app/views/super/application/_display_index.html.erb
236
+ - app/views/super/application/_display_rich_text.html.erb
237
+ - app/views/super/application/_display_show.html.erb
218
238
  - app/views/super/application/_filter.html.erb
219
239
  - app/views/super/application/_filter_type_select.html.erb
220
240
  - app/views/super/application/_filter_type_text.html.erb
221
241
  - app/views/super/application/_filter_type_timestamp.html.erb
222
242
  - app/views/super/application/_flash.html.erb
243
+ - app/views/super/application/_form.html.erb
223
244
  - app/views/super/application/_form_field__destroy.html.erb
245
+ - app/views/super/application/_form_field_checkbox.html.erb
246
+ - app/views/super/application/_form_field_rich_text_area.html.erb
224
247
  - app/views/super/application/_form_field_select.html.erb
225
248
  - app/views/super/application/_form_field_text.html.erb
226
249
  - app/views/super/application/_form_fieldset.html.erb
227
250
  - app/views/super/application/_form_has_many.html.erb
228
251
  - app/views/super/application/_form_has_one.html.erb
229
- - app/views/super/application/_form_inline_errors.html.erb
252
+ - app/views/super/application/_layout.html.erb
230
253
  - app/views/super/application/_member_header.html.erb
231
- - app/views/super/application/_super_layout.html.erb
232
- - app/views/super/application/_super_pagination.html.erb
233
- - app/views/super/application/_super_panel.html.erb
234
- - app/views/super/application/_super_schema_display_actions.html.erb
235
- - app/views/super/application/_super_schema_display_index.html.erb
236
- - app/views/super/application/_super_schema_display_show.html.erb
237
- - app/views/super/application/_super_schema_form.html.erb
254
+ - app/views/super/application/_pagination.html.erb
255
+ - app/views/super/application/_panel.html.erb
256
+ - app/views/super/application/_query.html.erb
257
+ - app/views/super/application/_sort.html.erb
258
+ - app/views/super/application/_sort_expression.html.erb
238
259
  - app/views/super/application/edit.html.erb
239
260
  - app/views/super/application/index.html.erb
240
261
  - app/views/super/application/new.html.erb
@@ -242,27 +263,16 @@ files:
242
263
  - app/views/super/application/show.html.erb
243
264
  - app/views/super/feather/README.md
244
265
  - app/views/super/feather/_chevron_down.html
266
+ - app/views/super/feather/_x.html
245
267
  - config/locales/en.yml
246
268
  - config/routes.rb
247
- - docs/README.md
248
269
  - docs/cheat.md
249
- - docs/faq.md
250
- - docs/quick_start.md
251
- - docs/webpacker.md
252
- - docs/yard_customizations.rb
253
- - frontend/super-frontend/build.js
254
270
  - frontend/super-frontend/dist/application.css
255
271
  - frontend/super-frontend/dist/application.js
256
- - frontend/super-frontend/package.json
257
- - frontend/super-frontend/postcss.config.js
258
- - frontend/super-frontend/src/javascripts/super/application.ts
259
- - frontend/super-frontend/src/javascripts/super/apply_template_controller.ts
260
- - frontend/super-frontend/src/javascripts/super/rails__ujs.d.ts
261
- - frontend/super-frontend/src/javascripts/super/toggle_pending_destruction_controller.ts
262
- - frontend/super-frontend/src/stylesheets/super/application.css
263
- - frontend/super-frontend/tailwind.config.js
264
- - frontend/super-frontend/tsconfig.json
265
- - frontend/super-frontend/yarn.lock
272
+ - lib/generators/super/action_text/USAGE
273
+ - lib/generators/super/action_text/action_text_generator.rb
274
+ - lib/generators/super/action_text/templates/pack_super_action_text.css
275
+ - lib/generators/super/action_text/templates/pack_super_action_text.js
266
276
  - lib/generators/super/install/USAGE
267
277
  - lib/generators/super/install/install_generator.rb
268
278
  - lib/generators/super/install/templates/base_controller.rb.tt
@@ -281,16 +291,24 @@ files:
281
291
  - lib/super/configuration.rb
282
292
  - lib/super/controls.rb
283
293
  - lib/super/controls/optional.rb
284
- - lib/super/controls/required.rb
285
294
  - lib/super/controls/steps.rb
295
+ - lib/super/controls/view.rb
296
+ - lib/super/display.rb
297
+ - lib/super/display/guesser.rb
286
298
  - lib/super/display/schema_types.rb
287
299
  - lib/super/engine.rb
288
300
  - lib/super/error.rb
289
301
  - lib/super/filter.rb
302
+ - lib/super/filter/form_object.rb
303
+ - lib/super/filter/guesser.rb
290
304
  - lib/super/filter/operator.rb
291
305
  - lib/super/filter/schema_types.rb
292
306
  - lib/super/form.rb
307
+ - lib/super/form/builder.rb
308
+ - lib/super/form/guesser.rb
309
+ - lib/super/form/inline_errors.rb
293
310
  - lib/super/form/schema_types.rb
311
+ - lib/super/form/strong_params.rb
294
312
  - lib/super/layout.rb
295
313
  - lib/super/link.rb
296
314
  - lib/super/navigation/automatic.rb
@@ -299,14 +317,25 @@ files:
299
317
  - lib/super/partial.rb
300
318
  - lib/super/partial/resolving.rb
301
319
  - lib/super/plugin.rb
320
+ - lib/super/query/form_object.rb
302
321
  - lib/super/schema.rb
322
+ - lib/super/schema/common.rb
323
+ - lib/super/schema/guesser.rb
324
+ - lib/super/sort.rb
325
+ - lib/super/useful/builder.rb
326
+ - lib/super/useful/enum.rb
303
327
  - lib/super/version.rb
304
328
  - lib/super/view_helper.rb
305
- homepage:
329
+ homepage:
306
330
  licenses:
307
331
  - LGPL-3.0-only
308
- metadata: {}
309
- post_install_message:
332
+ metadata:
333
+ bug_tracker_uri: https://github.com/zachahn/super/issues
334
+ changelog_uri: https://github.com/zachahn/super/blob/main/CHANGELOG.md
335
+ documentation_uri: https://superadministration.github.io/
336
+ homepage_uri: https://github.com/zachahn/super
337
+ source_code_uri: https://github.com/zachahn/super
338
+ post_install_message:
310
339
  rdoc_options: []
311
340
  require_paths:
312
341
  - lib
@@ -321,8 +350,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
321
350
  - !ruby/object:Gem::Version
322
351
  version: '0'
323
352
  requirements: []
324
- rubygems_version: 3.1.4
325
- signing_key:
353
+ rubygems_version: 3.2.4
354
+ signing_key:
326
355
  specification_version: 4
327
356
  summary: A simple, powerful, zero dependency Rails admin framework
328
357
  test_files: []