hot-glue 0.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.
Files changed (34) hide show
  1. checksums.yaml +7 -0
  2. data/.github/FUNDING.yml +2 -0
  3. data/.gitignore +16 -0
  4. data/Gemfile +15 -0
  5. data/Gemfile.lock +196 -0
  6. data/LICENCE +13 -0
  7. data/README.md +262 -0
  8. data/Rakefile +32 -0
  9. data/app/helpers/hot_glue/controller_helper.rb +105 -0
  10. data/app/helpers/hot_glue_helper.rb +4 -0
  11. data/bin/rails +14 -0
  12. data/lib/generators/hot_glue/install_generator.rb +21 -0
  13. data/lib/generators/hot_glue/scaffold_generator.rb +674 -0
  14. data/lib/generators/hot_glue/templates/_errors.haml +5 -0
  15. data/lib/generators/hot_glue/templates/_flash_notices.haml +7 -0
  16. data/lib/generators/hot_glue/templates/_form.haml +4 -0
  17. data/lib/generators/hot_glue/templates/_line.haml +6 -0
  18. data/lib/generators/hot_glue/templates/_list.haml +9 -0
  19. data/lib/generators/hot_glue/templates/_new_button.haml +2 -0
  20. data/lib/generators/hot_glue/templates/_show.haml +7 -0
  21. data/lib/generators/hot_glue/templates/base_controller.rb +3 -0
  22. data/lib/generators/hot_glue/templates/controller.rb +125 -0
  23. data/lib/generators/hot_glue/templates/controller_spec.rb +110 -0
  24. data/lib/generators/hot_glue/templates/create.turbo_stream.haml +5 -0
  25. data/lib/generators/hot_glue/templates/destroy.turbo_stream.haml +2 -0
  26. data/lib/generators/hot_glue/templates/edit.haml +19 -0
  27. data/lib/generators/hot_glue/templates/edit.turbo_stream.haml +4 -0
  28. data/lib/generators/hot_glue/templates/index.haml +9 -0
  29. data/lib/generators/hot_glue/templates/new.haml +10 -0
  30. data/lib/generators/hot_glue/templates/update.turbo_stream.haml +5 -0
  31. data/lib/hot-glue.rb +28 -0
  32. data/lib/hotglue/engine.rb +6 -0
  33. data/lib/hotglue/version.rb +3 -0
  34. metadata +178 -0
@@ -0,0 +1,4 @@
1
+ .row
2
+ <%= all_form_fields %>
3
+ .col
4
+ = f.submit "Save", class: "btn btn-primary pull-right"
@@ -0,0 +1,6 @@
1
+ = turbo_frame_tag "<%= singular %>__#{<%= singular %>.id}" do
2
+ .row{'data-id': <%= singular %>.id, 'data-edit': 'false'}
3
+ = render partial: "show", locals: {<%= singular %>: <%= singular %>}
4
+
5
+
6
+
@@ -0,0 +1,9 @@
1
+ = turbo_frame_tag "<%= plural %>-list" do
2
+ .container.<%= singular %>-table
3
+ .row
4
+ <%= list_column_headings %>
5
+ %div.tbody
6
+ - if <%= plural %>.empty?
7
+ None
8
+ - <%= plural %>.each do |<%= singular %>|
9
+ = render partial: '<%= line_path_partial %>', locals: {<%= singular %>: <%= singular %> <%= nested_assignments_with_leading_comma %> }
@@ -0,0 +1,2 @@
1
+ = turbo_frame_tag "<%= singular %>-new" do
2
+ = link_to "New <%= singular.titleize %>", new_<%= singular %>_path(), disable_with: "Loading...", class: "new-<%= singular %>-button btn btn-primary pull-right"
@@ -0,0 +1,7 @@
1
+ <%= all_line_fields %>
2
+ .col
3
+ <% if destroy_action %>
4
+ = link_to "Delete <i class='fa fa-1x fa-remove'></i>".html_safe, <%= path_helper_full %>(<%= path_helper_args %>), method: :delete, data: {confirm: 'Are you sure?'}, disable_with: "Loading...", class: "delete-<%= singular %>-button btn btn-primary "
5
+ <% end %>
6
+ &nbsp;
7
+ = link_to "Edit <i class='fa fa-1x fa-list-alt'></i>".html_safe, edit_<%= path_helper_full %>(<%= path_helper_args %>), disable_with: "Loading...", class: "edit-<%= singular %>-button btn btn-primary "
@@ -0,0 +1,3 @@
1
+ class <%= controller_descends_from %> < ApplicationController
2
+ end
3
+
@@ -0,0 +1,125 @@
1
+ class <%= controller_class_name %> < <%= controller_descends_from %>
2
+ <% unless @auth_identifier == '' || @auth.nil? %>before_action :authenticate_<%= auth_identifier %>!<% end %>
3
+ <% if any_nested? %> <% @nested_args.each do |arg| %>
4
+ before_action :load_<%= arg %><% end %> <% end %>
5
+ before_action :load_<%= singular_name %>, only: [:show, :edit, :update, :destroy]
6
+ helper :hot_glue
7
+ include HotGlue::ControllerHelper
8
+
9
+ <% if no_devise_installed %>
10
+ # TODO: implement current_user or use Devise
11
+ <% end %>
12
+
13
+ <% if any_nested? %><% nest_chain = [] %> <% @nested_args.each { |arg|
14
+ this_scope = nest_chain.empty? ? "#{@auth ? auth_object : class_name}.#{arg}s" : "@#{nest_chain.last}.#{arg}s"
15
+ nest_chain << arg %>def load_<%= arg %>
16
+ @<%= arg %> = <%= this_scope %>.find(params[:<%= arg %>_id])
17
+ end<% } %><% end %>
18
+
19
+ <% if !@self_auth %>
20
+ def load_<%= singular_name %>
21
+ @<%= singular_name %> = <%= object_scope %>.find(params[:id])
22
+ end
23
+ <% else %>
24
+ def load_<%= singular_name %>
25
+ @<%= singular_name %> = <%= auth_object %>
26
+ end<% end %>
27
+
28
+ def load_all_<%= plural %>
29
+ <% if !@self_auth %>@<%= plural_name %> = <%= object_scope %><% if model_has_strings? %>.where(<%=class_name %>.arel_table[:email].matches("%#{@__general_string}%"))<% end %>.page(params[:page])
30
+ <% else %>@<%= plural_name %> = [<%= auth_object %>]<% end %>
31
+ end
32
+
33
+ def index
34
+ load_all_<%= plural %>
35
+ respond_to do |format|
36
+ format.html
37
+ end
38
+ end
39
+
40
+ <% if create_action %> def new <% if !@auth.nil? %>
41
+ @<%= singular_name %> = <%= class_name %>.new(<%= @object_owner_sym %>: <%= @object_owner_eval %>)
42
+ <% else %>
43
+ @<%= singular_name %> = <%= class_name %>.new
44
+ <% end %>
45
+ respond_to do |format|
46
+ format.html
47
+ end
48
+ end
49
+
50
+ def create
51
+ modified_params = modify_date_inputs_on_params(<%=singular_name %>_params.dup<% if !@object_owner_sym.empty? %>.merge!(<%= @object_owner_sym %>: <%= @object_owner_eval %> )<% end %> <%= @auth ? ', ' + @auth : '' %>)
52
+ @<%=singular_name %> = <%=class_name %>.create(modified_params)
53
+
54
+ if @<%= singular_name %>.save
55
+
56
+ else
57
+ flash[:alert] = "Oops, your <%= singular_name %> could not be created."
58
+ end
59
+ load_all_<%= plural %>
60
+ respond_to do |format|
61
+ format.turbo_stream
62
+ format.html { redirect_to <%= plural %>_path }
63
+ end
64
+ end<% end %>
65
+
66
+ def show
67
+ respond_to do |format|
68
+ format.html
69
+ end
70
+ end
71
+
72
+ def edit
73
+ respond_to do |format|
74
+ format.turbo_stream
75
+ format.html
76
+ end
77
+ end
78
+
79
+ def update
80
+ if !@<%= singular_name %>.update(modify_date_inputs_on_params(<%= singular %>_params<%= @auth ? ', ' + @auth : '' %>))
81
+ flash[:alert] = "<%= singular_name.titlecase %> could not be saved"
82
+ end
83
+ respond_to do |format|
84
+ format.turbo_stream
85
+ format.html
86
+ end
87
+ end
88
+
89
+ <% if destroy_action %> def destroy
90
+ begin
91
+ @<%=singular_name%>.destroy
92
+ rescue StandardError => e
93
+ flash[:alert] = "<%= singular_name.titlecase %> could not be deleted"
94
+ end
95
+ load_all_<%= plural %>
96
+ respond_to do |format|
97
+ format.turbo_stream
98
+ format.html { redirect_to <%= plural %>_path }
99
+ end
100
+ end<% end %>
101
+
102
+ def <%=singular_name%>_params
103
+ params.require(:<%=singular_name%>).permit( <%= @columns %> )
104
+ end
105
+
106
+ def default_colspan
107
+ <%= @default_colspan %>
108
+ end
109
+
110
+ def namespace
111
+ <% if @namespace %>
112
+ "<%= @namespace %>/"
113
+ <% else %>
114
+ ""
115
+ <% end %>
116
+ end
117
+
118
+
119
+ def common_scope
120
+ @nested_args
121
+ end
122
+
123
+ end
124
+
125
+
@@ -0,0 +1,110 @@
1
+ require 'rails_helper'
2
+
3
+ describe <%= controller_class_name %> do
4
+ render_views
5
+ <% unless @auth.nil? %> let(:<%= @auth %>) {create(:<%= @auth.gsub('current_', '') %>)}<%end%>
6
+ let(:<%= singular %>) {create(:<%= singular %><%= object_parent_mapping_as_argument_for_specs %> )}
7
+
8
+ <%= objest_nest_factory_setup %>
9
+
10
+ before(:each) do
11
+ @request.env["devise.mapping"] = Devise.mappings[:account]
12
+
13
+ sign_in <%= @auth %>, scope: :<%= @auth %>
14
+ end
15
+
16
+ describe "index" do
17
+ it "should respond" do
18
+ get :index, xhr: true, format: 'js', params: {
19
+ <%= objest_nest_params_by_id_for_specs %>
20
+ }
21
+ end
22
+ end
23
+
24
+ describe "new" do
25
+ it "should show form" do
26
+ get :new, xhr: true, format: 'js', params: {
27
+ <%= objest_nest_params_by_id_for_specs %>
28
+ }
29
+ end
30
+ end
31
+
32
+ describe "create" do
33
+ it "should create a new <%= singular %>" do
34
+ expect {
35
+ post :create, xhr: true, format: 'js', params: {
36
+ <%= (@nested_args.empty? ? "" : objest_nest_params_by_id_for_specs + ",") %>
37
+ <%= singular %>: {
38
+ <%= columns_spec_with_sample_data %>
39
+ }}
40
+ }.to change { <%= @singular_class %>.all.count }.by(1)
41
+ assert_response :ok
42
+ end
43
+
44
+ # it "should not create if there are errors" do
45
+ # post :create, xhr: true, format: 'js', params: {id: <%= singular %>.id,
46
+ # <%= singular %>: {skin_id: nil}}
47
+ #
48
+ # expect(controller).to set_flash.now[:alert].to(/Oops, your <%= singular %> could not be saved/)
49
+ # end
50
+ end
51
+
52
+ describe "edit" do
53
+ it "should return an editable form" do
54
+ get :edit, xhr: true, format: 'js', params: {
55
+ <%= (@nested_args.empty? ? "" : objest_nest_params_by_id_for_specs + ",") %>
56
+ id: <%= singular %>.id
57
+ }
58
+ assert_response :ok
59
+ end
60
+ end
61
+
62
+ describe "show" do
63
+ it "should return a view form" do
64
+ get :show, xhr: true, format: 'js', params: {
65
+ <%= (@nested_args.empty? ? "" : objest_nest_params_by_id_for_specs + ",") %>
66
+ id: <%= singular %>.id
67
+ }
68
+ assert_response :ok
69
+ end
70
+ end
71
+
72
+ describe "update" do
73
+ it "should update" do
74
+ put :update, xhr: true, format: 'js',
75
+ params: {
76
+ <%= (@nested_args.empty? ? "" : objest_nest_params_by_id_for_specs + ",") %>
77
+ id: <%= singular %>.id,
78
+ <%= singular %>: {
79
+ <%= columns_spec_with_sample_data %>
80
+ }}
81
+
82
+ assert_response :ok
83
+ end
84
+
85
+ # it "should not update if invalid" do
86
+ # put :update, xhr: true, format: 'js',
87
+ # params: {
88
+ # id: <%= singular %>.id,
89
+ # <%= singular %>: {
90
+ # <%= columns_spec_with_sample_data %>
91
+ # }}
92
+ #
93
+ # assert_response :ok
94
+ #
95
+ # expect(controller).to set_flash.now[:alert].to(/Oops, your <%= singular %> could not be saved/)
96
+ # end
97
+ end
98
+
99
+ describe "#destroy" do
100
+ it "should destroy" do
101
+ post :destroy, format: 'js', params: {
102
+ <%= (@nested_args.empty? ? "" : objest_nest_params_by_id_for_specs + ",") %>
103
+ id: <%= singular %>.id
104
+ }
105
+ assert_response :ok
106
+ expect(<%= @singular_class %>.count).to be(0)
107
+ end
108
+ end
109
+ end
110
+
@@ -0,0 +1,5 @@
1
+ = turbo_stream.replace "<%= plural %>-list" do
2
+ = render partial: "list", locals: {<%= plural %>: @<%= plural %>}
3
+
4
+ = turbo_stream.replace "<%= singular %>-new" do
5
+ = render partial: "new_button"
@@ -0,0 +1,2 @@
1
+ = turbo_stream.replace "<%=plural%>-list" do
2
+ = render partial: "list", locals: {<%=plural%>: @<%=plural%>}
@@ -0,0 +1,19 @@
1
+ = turbo_frame_tag "<%= singular %>__#{<%= "@" + singular %>.id}" do
2
+ .cell.editable{style: "position: relative;"}
3
+ - if <%="@" + singular%>.errors.any?
4
+ = render(partial: "#{controller.namespace}errors", locals: {resource: <%="@" + singular%>})
5
+
6
+
7
+ Editing
8
+ - if <%="@" + singular%>.try(:to_label)
9
+ = <%="@" + singular%>.to_label
10
+ - elsif <%="@" + singular%>.try(:name)
11
+ = <%="@" + singular%>.name
12
+ - else
13
+ (no name)
14
+
15
+ = form_with model: <%= "@" + singular%>, url: <%= path_helper_singular %>(<%= path_arity %>) do |f|
16
+ = render partial: "form", locals: {:<%= singular %> => <%= "@" + singular%>, f: f}
17
+
18
+ %i.fa.fa-times-circle.fa-2x{ 'data-name' => 'close-invoice__#{@invoice.id}', 'data-row-id' => <%= "@" + singular %>.id, 'data-role' => 'close-button'}
19
+
@@ -0,0 +1,4 @@
1
+
2
+ = turbo_stream.replace "<%= singular%>__#{@<%= singular %>.id}" do
3
+ = render 'edit'
4
+
@@ -0,0 +1,9 @@
1
+ .container-fluid
2
+ .row
3
+ .col-md-12
4
+ = render partial: "new_button"
5
+ .clearfix
6
+ = render partial: "<%= plural %>/list", locals: {<%= plural %>: @<%= plural %>}
7
+
8
+
9
+
@@ -0,0 +1,10 @@
1
+ = turbo_frame_tag "<%= singular %>-new" do
2
+ %h3
3
+ New <%= singular.titlecase %>
4
+
5
+ = form_with model: @invoice, url: <%= path_helper_plural %>(<%= nested_objects_arity %>), method: "post" do |f|
6
+ = render partial: "<%=namespace_with_slash%><%= @plural %>/form", locals: {<%= singular %>: @<%= singular %>, f: f}
7
+
8
+ .row
9
+ .col-md-12
10
+ = f.submit "Save", class: "btn btn-primary pull-right"
@@ -0,0 +1,5 @@
1
+
2
+ = turbo_stream.replace "<%= singular%>__#{@<%= singular %>.id}" do
3
+ = render partial: 'line', locals: {<%= singular %>: @<%= singular %> <%= nested_assignments_with_leading_comma %> }
4
+
5
+
data/lib/hot-glue.rb ADDED
@@ -0,0 +1,28 @@
1
+ require "hotglue/engine"
2
+
3
+ require 'kaminari'
4
+ require 'haml-rails'
5
+
6
+
7
+ module HotGlue
8
+
9
+ # module ControllerHelpers
10
+ # def modify_date_inputs_on_params(modified_params, authenticated_user = nil)
11
+ # use_timezone = authenticated_user.timezone || Time.now.strftime("%z")
12
+ #
13
+ # modified_params = modified_params.tap do |params|
14
+ # params.keys.each{|k|
15
+ # if k.ends_with?("_at") || k.ends_with?("_date")
16
+ #
17
+ # begin
18
+ # params[k] = DateTime.strptime("#{params[k]} #{use_timezone}", '%Y-%m-%dT%H:%M %z')
19
+ # rescue StandardError
20
+ #
21
+ # end
22
+ # end
23
+ # }
24
+ # end
25
+ # modified_params
26
+ # end
27
+ # end
28
+ end
@@ -0,0 +1,6 @@
1
+ module HotGlue
2
+ class Engine < ::Rails::Engine
3
+
4
+ config.autoload_paths << File.expand_path("lib/helpers/hot_glue_helper.rb", __dir__)
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module HotGlue
2
+ VERSION = '0.0.2'
3
+ end
metadata ADDED
@@ -0,0 +1,178 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hot-glue
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Jason Fleetwood-Boldt
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-02-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: kaminari
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: haml-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: turbo-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.5'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sass-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: ffaker
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.16'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.16'
97
+ description: Simple, plug & play Rails scaffold building companion for Turbo-Rails
98
+ and Hotwire
99
+ email: tech@datatravels.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".github/FUNDING.yml"
105
+ - ".gitignore"
106
+ - Gemfile
107
+ - Gemfile.lock
108
+ - LICENCE
109
+ - README.md
110
+ - Rakefile
111
+ - app/helpers/hot_glue/controller_helper.rb
112
+ - app/helpers/hot_glue_helper.rb
113
+ - bin/rails
114
+ - lib/generators/hot_glue/install_generator.rb
115
+ - lib/generators/hot_glue/scaffold_generator.rb
116
+ - lib/generators/hot_glue/templates/_errors.haml
117
+ - lib/generators/hot_glue/templates/_flash_notices.haml
118
+ - lib/generators/hot_glue/templates/_form.haml
119
+ - lib/generators/hot_glue/templates/_line.haml
120
+ - lib/generators/hot_glue/templates/_list.haml
121
+ - lib/generators/hot_glue/templates/_new_button.haml
122
+ - lib/generators/hot_glue/templates/_show.haml
123
+ - lib/generators/hot_glue/templates/base_controller.rb
124
+ - lib/generators/hot_glue/templates/controller.rb
125
+ - lib/generators/hot_glue/templates/controller_spec.rb
126
+ - lib/generators/hot_glue/templates/create.turbo_stream.haml
127
+ - lib/generators/hot_glue/templates/destroy.turbo_stream.haml
128
+ - lib/generators/hot_glue/templates/edit.haml
129
+ - lib/generators/hot_glue/templates/edit.turbo_stream.haml
130
+ - lib/generators/hot_glue/templates/index.haml
131
+ - lib/generators/hot_glue/templates/new.haml
132
+ - lib/generators/hot_glue/templates/update.turbo_stream.haml
133
+ - lib/hot-glue.rb
134
+ - lib/hotglue/engine.rb
135
+ - lib/hotglue/version.rb
136
+ homepage: https://blog.jasonfleetwoodboldt.com/hot-glue/
137
+ licenses:
138
+ - Nonstandard
139
+ metadata:
140
+ source_code_uri: https://github.com/jasonfb/hot-glue
141
+ documentation_uri: https://jfb.teachable.com/p/gems-by-jason
142
+ homepage_uri: https://blog.jasonfleetwoodboldt.com/hot-glue/
143
+ post_install_message: |
144
+ ---------------------------------------------
145
+ Welcome to Hot Glue - A Scaffold Building Companion for Hotwire + Turbo-Rails
146
+
147
+ rails generate hot_glue:scaffold Thing
148
+
149
+ * Build plug-and-play scaffolding mixing HAML with the power of Hotwire and Turbo-Rails
150
+ * Automatically Reads Your Models (make them before building your scaffolding!)
151
+ * Excellent for CRUD, lists with pagination, searching, sorting.
152
+ * Great for prototyping very.
153
+ * Plays nicely with Devise, Kaminari, Haml-Rails, Rspec.
154
+ * Create specs automatically along with the controllers.
155
+ * Nest your routes model-by-model for built-in poor man's authentication
156
+ * Throw the scaffolding away when your app is ready to graduate to its next phase.
157
+
158
+ see README for complete instructions.
159
+ ---------------------------------------------
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ requirements: []
174
+ rubygems_version: 3.0.8
175
+ signing_key:
176
+ specification_version: 4
177
+ summary: A gem build scaffolding.
178
+ test_files: []