hot-glue 0.2.3 → 0.2.9E
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -1
- data/.travis.yml +15 -0
- data/Gemfile +8 -2
- data/Gemfile.lock +35 -24
- data/README.md +307 -85
- data/Rakefile +34 -24
- data/app/helpers/hot_glue/controller_helper.rb +6 -4
- data/app/helpers/hot_glue_helper.rb +4 -0
- data/app/views/layouts/_flash_notices.erb +12 -0
- data/lib/generators/hot_glue/install_generator.rb +55 -0
- data/lib/generators/hot_glue/markup_templates/erb.rb +51 -8
- data/lib/generators/hot_glue/markup_templates/haml.rb +2 -2
- data/lib/generators/hot_glue/scaffold_generator.rb +87 -35
- data/lib/generators/hot_glue/templates/capybara_login.rb +8 -0
- data/lib/generators/hot_glue/templates/confirmable.js +14 -0
- data/lib/generators/hot_glue/templates/controller.rb.erb +18 -22
- data/lib/generators/hot_glue/templates/erb/_line.erb +1 -1
- data/lib/generators/hot_glue/templates/erb/_list.erb +10 -2
- data/lib/generators/hot_glue/templates/erb/_show.erb +18 -2
- data/lib/generators/hot_glue/templates/erb/create.turbo_stream.erb +3 -3
- data/lib/generators/hot_glue/templates/erb/destroy.turbo_stream.erb +1 -1
- data/lib/generators/hot_glue/templates/erb/edit.erb +3 -13
- data/lib/generators/hot_glue/templates/erb/index.erb +1 -2
- data/lib/generators/hot_glue/templates/erb/update.turbo_stream.erb +5 -2
- data/lib/generators/hot_glue/templates/haml/_line.haml +1 -1
- data/lib/generators/hot_glue/templates/haml/_list.haml +5 -1
- data/lib/generators/hot_glue/templates/haml/create.turbo_stream.haml +3 -3
- data/lib/generators/hot_glue/templates/haml/destroy.turbo_stream.haml +1 -1
- data/lib/generators/hot_glue/templates/haml/edit.haml +0 -2
- data/lib/generators/hot_glue/templates/haml/index.haml +1 -2
- data/lib/generators/hot_glue/templates/system_spec.rb.erb +146 -47
- data/lib/hot-glue.rb +1 -2
- data/lib/hotglue/version.rb +1 -1
- metadata +23 -33
@@ -5,24 +5,14 @@
|
|
5
5
|
<div class="cell editable" style="position: relative;">
|
6
6
|
|
7
7
|
<\% if @<%= singular %>.errors.any? %>
|
8
|
-
<\%= render(partial: "#{controller.namespace}errors", locals: {resource: @<%= singular%> }) %>
|
8
|
+
<\%= render(partial: "#{controller.namespace}errors", locals: {resource: @<%= singular %> }) %>
|
9
9
|
<\% end %>
|
10
10
|
|
11
|
-
<h2>Editing
|
12
|
-
<% if eval("@" + singular).try(:to_label) %>
|
13
|
-
<%="@" + singular%>.to_label
|
14
|
-
<% elsif eval("@" + singular).try(:name) %>
|
15
|
-
<%="@" + singular%>.name %>
|
16
|
-
<% else %>
|
17
|
-
(no name)
|
18
|
-
<% end %>
|
11
|
+
<h2>Editing <\%= @<%= @singular %>.<%= display_class %> %></h2>
|
19
12
|
<\%= form_with model: <%= "@" + singular%>, url: <%= path_helper_singular %>(<%= path_arity %>) do |f| %>
|
20
13
|
<\%= render partial: "form", locals: {:<%= singular %> => <%= "@" + singular%>, f: f} %>
|
21
14
|
<\% end %>
|
22
|
-
|
23
|
-
data-name='close-<%= singular %>__<\% <%= "@" + singular %>.id %> }'
|
24
|
-
data-row-id=<%= "@" + singular %>.id,
|
25
|
-
data-role='close-button'></i>
|
15
|
+
|
26
16
|
</div>
|
27
17
|
|
28
18
|
<\% end %>
|
@@ -1,10 +1,9 @@
|
|
1
1
|
<div class="container-fluid">
|
2
2
|
<div class="row">
|
3
3
|
<div class="col-md-12">
|
4
|
-
<\%= render partial: "new_button" %>
|
5
4
|
<div class="clearfix"></div>
|
6
5
|
<\%= render partial: '<%= list_path_partial %>',
|
7
|
-
locals: {<%=
|
6
|
+
locals: {<%= plural %>: @<%= plural %><%= nest_assignments_operator(true, true) if @nestable %> } \%>
|
8
7
|
</div>
|
9
8
|
</div>
|
10
9
|
</div>
|
@@ -1,6 +1,9 @@
|
|
1
|
-
|
2
|
-
<\%= render partial: 'line', locals: {<%= singular %>: @<%= singular %> <%=
|
1
|
+
<% if !@display_list_after_update %><\%= turbo_stream.replace "<%= singular%>__#{@<%= singular %>.id}" do %>
|
2
|
+
<\%= render partial: 'line', locals: {<%= singular %>: @<%= singular %> <%= nest_assignments_operator(true,true) %> } %>
|
3
|
+
<\% end %><% else %><\%= turbo_stream.replace "<%= plural %>-list" do %>
|
4
|
+
<\%= render partial: '<%= list_path_partial %>', locals: {<%= plural %>: @<%= plural %><%= nest_assignments_operator(true, true) if @nestable %> } \%>
|
3
5
|
<\% end %>
|
6
|
+
<% end %>
|
4
7
|
|
5
8
|
<\%= turbo_stream.replace "flash_notices" do %>
|
6
9
|
<\%= render partial: "layouts/flash_notices" %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
= turbo_frame_tag "<%= singular %>__#{<%= singular %>.id}" do
|
2
2
|
.row{'data-id': <%= singular %>.id, 'data-edit': 'false'}
|
3
|
-
= render partial: "<%= show_path_partial %>", locals: {<%= singular %>: <%= singular %>}
|
3
|
+
= render partial: "<%= show_path_partial %>", locals: {<%= singular %>: <%= singular %> <%= nest_assignments_operator(false, true) %>}
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -1,11 +1,15 @@
|
|
1
1
|
= turbo_frame_tag "<%= plural %>-list" do
|
2
2
|
.container-fluid.<%= singular %>-table
|
3
3
|
.row
|
4
|
+
.col-md-12
|
5
|
+
<%= '= render partial: "' + (@namespace+"/" if @namespace) + plural + '/new_button", locals: {' + nested_assignments + '}' unless @no_create %>
|
6
|
+
|
7
|
+
.row
|
4
8
|
<%= list_column_headings %>
|
5
9
|
.col
|
6
10
|
%div
|
7
11
|
- if <%= plural %>.empty?
|
8
12
|
None
|
9
13
|
- <%= plural %>.each do |<%= singular %>|
|
10
|
-
= render partial: '<%= line_path_partial %>', locals: {<%= singular %>: <%= singular
|
14
|
+
= render partial: '<%= line_path_partial %>', locals: {<%= singular %>: <%= singular %><%= nested_assignments_with_leading_comma if @nestable %> }
|
11
15
|
<%= @no_paginate ? "" : paginate %>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
- if @<%= singular %>.errors.none?
|
2
2
|
= turbo_stream.replace "<%= plural %>-list" do
|
3
|
-
= render partial: "list", locals: {<%= plural %>: @<%= plural %>}
|
3
|
+
= render partial: "list", locals: {<%= plural %>: @<%= plural %> <%= nest_assignments_operator(true, true) %>}
|
4
4
|
|
5
5
|
= turbo_stream.replace "<%= singular %>-new" do
|
6
6
|
- if @<%= singular %>.errors.none?
|
7
|
-
= render partial: "new_button"
|
7
|
+
= render partial: "new_button", locals: {<%= nest_assignments_operator(true, false) %> }
|
8
8
|
- else
|
9
|
-
= render partial: "new_form", locals: {<%= singular %>: @<%= singular %>}
|
9
|
+
= render partial: "new_form", locals: {<%= singular %>: @<%= singular %> <%= nest_assignments_operator(true, true) %>}
|
10
10
|
|
11
11
|
= turbo_stream.replace "flash_notices" do
|
12
12
|
= render partial: "layouts/flash_notices"
|
@@ -1,2 +1,2 @@
|
|
1
1
|
= turbo_stream.replace "<%=plural%>-list" do
|
2
|
-
= render partial: "list", locals: {<%=plural%>: @<%=plural%>}
|
2
|
+
= render partial: "list", locals: {<%=plural%>: @<%=plural%> <%= nest_assignments_operator(true, true) %>}
|
@@ -17,5 +17,3 @@
|
|
17
17
|
= form_with model: <%= "@" + singular%>, url: <%= path_helper_singular %>(<%= path_arity %>) do |f|
|
18
18
|
= render partial: "form", locals: {:<%= singular %> => <%= "@" + singular%>, f: f}
|
19
19
|
|
20
|
-
%i.fa.fa-times-circle.fa-2x{ 'data-name' => 'close-invoice__#{@invoice.id}', 'data-row-id' => <%= "@" + singular %>.id, 'data-role' => 'close-button'}
|
21
|
-
|
@@ -1,9 +1,8 @@
|
|
1
1
|
.container-fluid
|
2
2
|
.row
|
3
3
|
.col-md-12
|
4
|
-
= render partial: "new_button"
|
5
4
|
.clearfix
|
6
|
-
= render partial: "<%= list_path_partial %>", locals: {<%= plural %>: @<%= plural %>}
|
5
|
+
= render partial: "<%= list_path_partial %>", locals: {<%= plural %>: @<%= plural %> <%= nest_assignments_operator(true, true) %>}
|
7
6
|
|
8
7
|
|
9
8
|
|
@@ -2,46 +2,77 @@ require 'rails_helper'
|
|
2
2
|
|
3
3
|
describe "interaction for <%= controller_class_name %>", type: :feature do
|
4
4
|
include HotGlue::ControllerHelper
|
5
|
-
<% unless @
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
<% unless @god %>let(:<%= @auth %>) {create(:<%= @auth.gsub('current_', '') %>)}<%end%>
|
6
|
+
<%= @columns.map { |col|
|
7
|
+
type = eval("#{singular_class}.columns_hash['#{col}']").type
|
8
|
+
case type
|
9
|
+
when :integer
|
10
|
+
if col.to_s.ends_with?("_id")
|
11
|
+
assoc = "#{col.to_s.gsub('_id','')}"
|
12
|
+
"let!(:#{assoc}1) {create(:#{assoc}, name: FFaker::Name.name)}"
|
13
|
+
end
|
14
|
+
else
|
15
|
+
end
|
16
|
+
}.compact.join("\n")
|
17
|
+
%>
|
18
|
+
<% item1_addOns = ""
|
19
|
+
if (eval(@singular_class).instance_methods.include?(display_class.to_s))
|
20
|
+
item1_addOns << "#{display_class}: FFaker::Name.name"
|
21
|
+
end
|
22
|
+
|
23
|
+
item1_addOns << ", " + @columns.map { |col|
|
24
|
+
type = eval("#{singular_class}.columns_hash['#{col}']").type
|
25
|
+
case type
|
26
|
+
when :string
|
27
|
+
"#{col}: FFaker::Movie.title"
|
28
|
+
when :text
|
29
|
+
"#{col}: FFaker::Lorem.paragraphs(10).join(" ")"
|
30
|
+
|
31
|
+
when :float
|
32
|
+
"#{col}: rand(1)*10000"
|
33
|
+
when :boolean
|
34
|
+
"#{col}: !!rand(2).floor"
|
35
|
+
when :time
|
36
|
+
"#{col}: Time.current + rand(5000).seconds"
|
37
|
+
when :date
|
38
|
+
"#{col}: Date.current + rand(50).days"
|
39
|
+
when :datetime
|
40
|
+
"#{col}: DateTime.current + rand(1000).seconds"
|
41
|
+
when :integer
|
42
|
+
if col.to_s.ends_with?("_id")
|
43
|
+
# shoould the assoication be on here
|
44
|
+
else
|
45
|
+
"#{col}: rand(100)"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
}.compact.join(", \n ")
|
49
|
+
%>let!(:<%= singular %>1) {create(:<%= singular %><%= object_parent_mapping_as_argument_for_specs %> <%= item1_addOns %> )}
|
50
|
+
<%= objest_nest_factory_setup %> <% unless @god %>
|
13
51
|
before(:each) do
|
14
52
|
login_as(<%= @auth %>)
|
15
|
-
end
|
53
|
+
end <% end %>
|
16
54
|
|
17
55
|
describe "index" do
|
18
56
|
it "should show me the list" do
|
19
57
|
visit <%= path_helper_plural %>
|
20
|
-
|
21
58
|
<%=
|
22
59
|
@columns.map { |col|
|
23
60
|
type = eval("#{singular_class}.columns_hash['#{col}']").type
|
24
|
-
# limit = eval("#{singular_class}.columns_hash['#{col}']").limit
|
25
|
-
# sql_type = eval("#{singular_class}.columns_hash['#{col}']").sql_type
|
26
|
-
#
|
27
|
-
|
28
61
|
case type
|
29
62
|
when :datetime
|
30
|
-
" " + ["expect(page).to have_content(#{singular}#{
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
63
|
+
" " + ["expect(page).to have_content(#{singular}#{1}.#{col}.in_time_zone(current_timezone).strftime('%m/%d/%Y @ %l:%M %p ').gsub(' ', ' ') + timezonize(current_timezone) )"].join("\n ")
|
64
|
+
when :integer
|
65
|
+
if !col.ends_with?("_id")
|
66
|
+
" " + ["expect(page).to have_content(#{singular}#{1}.#{col})"].join("\n ")
|
67
|
+
end
|
35
68
|
end
|
36
69
|
|
37
70
|
}.join("\n")
|
38
|
-
|
39
71
|
%>
|
40
|
-
|
41
72
|
end
|
42
73
|
end
|
43
74
|
|
44
|
-
describe "new & create" do
|
75
|
+
<% unless @no_create %> describe "new & create" do
|
45
76
|
it "should create a new <%= singular.titlecase %>" do
|
46
77
|
visit <%= path_helper_plural %>
|
47
78
|
click_link "New <%= singular.titlecase %>"
|
@@ -50,17 +81,34 @@ describe "interaction for <%= controller_class_name %>", type: :feature do
|
|
50
81
|
<%=
|
51
82
|
@columns.map { |col|
|
52
83
|
type = eval("#{singular_class}.columns_hash['#{col}']").type
|
53
|
-
# limit = eval("#{singular_class}.columns_hash['#{col}']").limit
|
54
|
-
# sql_type = eval("#{singular_class}.columns_hash['#{col}']").sql_type
|
55
|
-
#
|
56
|
-
|
57
84
|
case type
|
58
85
|
when :datetime
|
86
|
+
" " + "new_#{col} = DateTime.current + (rand(100).days) \n" +
|
87
|
+
' ' + "find(\"[name='#{singular}[#{ col.to_s }]']\").fill_in(with: new_#{col.to_s})"
|
88
|
+
|
59
89
|
when :integer
|
60
|
-
|
90
|
+
|
91
|
+
if col.to_s.ends_with?("_id")
|
92
|
+
assoc = col.to_s.gsub('_id','')
|
93
|
+
" #{col}_selector = find(\"[name='#{singular}[#{col}]']\").click \n" +
|
94
|
+
" #{col}_selector.first('option', text: #{assoc}1.name).select_option"
|
95
|
+
else
|
96
|
+
" new_#{col} = rand(10) \n" +
|
97
|
+
" find(\"[name='#{singular}[#{ col.to_s }]']\").fill_in(with: new_#{col.to_s})"
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
when :enum
|
102
|
+
" list_of_#{col.to_s} = #{singular_class}.defined_enums['#{col.to_s}'].keys \n" +
|
103
|
+
" " + "new_#{col.to_s} = list_of_#{col.to_s}[rand(list_of_#{col.to_s}.length)].to_s \n" +
|
104
|
+
' find("select[name=\'' + singular + '[' + col.to_s + ']\'] option[value=\'#{new_' + col.to_s + '}\']").select_option'
|
105
|
+
|
106
|
+
when :boolean
|
107
|
+
" new_#{col} = rand(2).floor \n" +
|
108
|
+
" find(\"[name='#{singular}[#{col}]'][value='\#{new_" + col.to_s + "}']\").choose"
|
61
109
|
else
|
62
110
|
" " + "new_#{col} = 'new_test-email@nowhere.com' \n" +
|
63
|
-
|
111
|
+
" find(\"[name='#{singular}[#{ col.to_s }]']\").fill_in(with: new_#{col.to_s})"
|
64
112
|
end
|
65
113
|
|
66
114
|
}.join("\n")
|
@@ -75,41 +123,82 @@ describe "interaction for <%= controller_class_name %>", type: :feature do
|
|
75
123
|
|
76
124
|
case type
|
77
125
|
when :datetime
|
126
|
+
" expect(page).to have_content(new_#{col}.in_time_zone(current_timezone).strftime('%m/%d/%Y') + \" @ \" +
|
127
|
+
new_#{col}.in_time_zone(current_timezone).strftime('%l').strip + \":\" +
|
128
|
+
new_#{col}.in_time_zone(current_timezone).strftime('%M %p').strip + \" \" +
|
129
|
+
timezonize(current_timezone))"
|
78
130
|
when :integer
|
131
|
+
if col.to_s.ends_with?("_id")
|
132
|
+
# shoould the assoication be on here
|
133
|
+
else
|
134
|
+
"expect(page).to have_content(new_#{col})"
|
135
|
+
end
|
79
136
|
else
|
80
137
|
"expect(page).to have_content(new_#{col})"
|
81
138
|
end
|
82
139
|
|
83
|
-
}.join("\n")
|
140
|
+
}.compact.join("\n ")
|
84
141
|
%>
|
85
142
|
|
86
143
|
end
|
87
|
-
end
|
144
|
+
end<% end %>
|
88
145
|
|
89
|
-
describe "show" do
|
90
|
-
it "should return a view form" do
|
91
|
-
visit <%= path_helper_plural %>
|
92
|
-
|
93
|
-
end
|
94
|
-
end
|
95
146
|
|
96
147
|
describe "edit & update" do
|
97
148
|
it "should return an editable form" do
|
98
149
|
visit <%= path_helper_plural %>
|
99
150
|
find("a.edit-<%= singular %>-button[href='/<%= namespace_with_slash %><%= plural %>/#{<%= singular %>1.id}/edit']").click
|
100
151
|
|
101
|
-
expect(page).to have_content("Editing #{<%= singular
|
152
|
+
expect(page).to have_content("Editing #{<%= singular %>1.<%= @display_class %> || "(no name)"}")
|
102
153
|
<%=
|
103
154
|
@columns.map { |col|
|
104
155
|
type = eval("#{singular_class}.columns_hash['#{col}']").type
|
105
|
-
|
156
|
+
limit = eval("#{singular_class}.columns_hash['#{col}']").limit
|
157
|
+
sql_type = eval("#{singular_class}.columns_hash['#{col}']").sql_type
|
106
158
|
case type
|
107
159
|
when :datetime
|
108
160
|
when :integer
|
109
|
-
|
110
|
-
|
161
|
+
if !col.to_s.ends_with?("_id")
|
162
|
+
" new_#{col} = rand(10000).floor \n" +
|
163
|
+
" find(\"[name='#{singular}[#{col}]']\").fill_in(with: new_#{col.to_s})"
|
164
|
+
end
|
165
|
+
when :text
|
166
|
+
if sql_type == "text"
|
167
|
+
" " + "new_#{col.to_s} = FFaker::Lorem.paragraphs(3).join \n" +
|
168
|
+
' find("textarea[name=\'' + singular + '[' + col.to_s + ']\']").fill_in(with: new_' + col.to_s + ')'
|
169
|
+
|
170
|
+
else # unreachable?
|
171
|
+
" " + "new_#{col.to_s} = FFaker::Name.name \n" +
|
172
|
+
' find("input[name=\'' + singular + '[' + col.to_s + ']\']").fill_in(with: new_' + col.to_s + ')'
|
173
|
+
end
|
174
|
+
when :string
|
175
|
+
if sql_type == "varchar"
|
176
|
+
" " + "new_#{col.to_s} = FFaker::Name.name \n" +
|
177
|
+
' find("input[name=\'' + singular + '[' + col.to_s + ']\']").fill_in(with: new_' + col.to_s + ')'
|
178
|
+
else
|
179
|
+
" " + "new_#{col.to_s} = FFaker::Lorem.paragraphs(1).join \n" +
|
180
|
+
' find("input[name=\'' + singular + '[' + col.to_s + ']\']").fill_in(with: new_' + col.to_s + ')'
|
181
|
+
end
|
182
|
+
when :boolean
|
183
|
+
" new_#{col} = rand(2).floor \n" +
|
184
|
+
" find(\"[name='#{singular}[#{col}]'][value='\#{new_#{col}}']\").choose"
|
185
|
+
when :float
|
186
|
+
" new_#{col} = rand(1)*5000 \n" +
|
187
|
+
" find(\"[name='#{singular}[#{col}]']\").fill_in(with: new_#{col.to_s })"
|
188
|
+
when :date
|
189
|
+
" new_#{col} = Date.current + rand(100).days \n" +
|
190
|
+
" find(\"[name='#{singular}[#{col}]']\").fill_in(with: new_#{col.to_s })"
|
191
|
+
when :time
|
192
|
+
" new_#{col} = Time.current + rand(144).hours \n" +
|
193
|
+
" find(\"[name='#{singular}[#{col}]']\").fill_in(with: new_#{col.to_s })"
|
194
|
+
when :enum
|
195
|
+
" list_of_#{col.to_s} = #{singular_class}.defined_enums['#{col.to_s}'].keys \n" +
|
196
|
+
" " + "new_#{col.to_s} = list_of_#{col.to_s}[rand(list_of_#{col.to_s}.length)].to_s \n" +
|
197
|
+
' find("select[name=\'' + singular + '[' + col.to_s + ']\'] option[value=\'#{new_' + col.to_s + '}\']").select_option'
|
111
198
|
|
112
|
-
|
199
|
+
else
|
200
|
+
" " + "new_#{col.to_s} = FFaker::Name.name \n" +
|
201
|
+
' find("input[name=\'' + singular + '[' + col.to_s + ']\']").fill_in(with: new_' + col.to_s + ')'
|
113
202
|
|
114
203
|
end
|
115
204
|
}.join("\n")
|
@@ -123,26 +212,36 @@ describe "interaction for <%= controller_class_name %>", type: :feature do
|
|
123
212
|
type = eval("#{singular_class}.columns_hash['#{col}']").type
|
124
213
|
case type
|
125
214
|
when :datetime
|
126
|
-
|
215
|
+
# TODO: implement me
|
216
|
+
when :time
|
217
|
+
# TODO: implement me
|
218
|
+
when :date
|
219
|
+
# TODO: implement me
|
220
|
+
when :boolean
|
221
|
+
# TODO: implement me
|
127
222
|
else
|
223
|
+
unless type==:integer && col.to_s.ends_with?("_id")
|
128
224
|
' expect(page).to have_content(new_' + col.to_s + ')'
|
225
|
+
end
|
129
226
|
end
|
130
|
-
}.join("\n")
|
227
|
+
}.compact.join("\n")
|
131
228
|
%>
|
132
229
|
|
133
230
|
end
|
134
231
|
end
|
135
232
|
end
|
136
233
|
|
137
|
-
describe "destroy" do
|
234
|
+
<% unless @no_delete %> describe "destroy" do
|
138
235
|
it "should destroy" do
|
139
236
|
visit <%= path_helper_plural %>
|
140
237
|
accept_alert do
|
141
|
-
find("
|
238
|
+
find("form[action='<%= namespace_with_dash %>/<%= plural %>/#{<%= singular %>1.id}'] > input.delete-<%= singular %>-button").click
|
142
239
|
end
|
143
|
-
|
240
|
+
# find("form[action='<%= namespace_with_dash %>/<%= plural %>/#{<%= singular %>1.id}'] > input.delete-<%= singular %>-button").click
|
241
|
+
|
242
|
+
expect(page).to_not have_content(<%= singular %>1.<%= @display_class %>)
|
144
243
|
expect(<%= singular_class %>.where(id: <%= singular %>1.id).count).to eq(0)
|
145
244
|
end
|
146
|
-
end
|
245
|
+
end<% end %>
|
147
246
|
end
|
148
247
|
|
data/lib/hot-glue.rb
CHANGED
data/lib/hotglue/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hot-glue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9E
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Fleetwood-Boldt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -44,32 +44,18 @@ dependencies:
|
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '1.2'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: haml-rails
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '2.0'
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - "~>"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '2.0'
|
61
47
|
- !ruby/object:Gem::Dependency
|
62
48
|
name: turbo-rails
|
63
49
|
requirement: !ruby/object:Gem::Requirement
|
64
50
|
requirements:
|
65
|
-
- - "
|
51
|
+
- - ">"
|
66
52
|
- !ruby/object:Gem::Version
|
67
53
|
version: '0.5'
|
68
54
|
type: :runtime
|
69
55
|
prerelease: false
|
70
56
|
version_requirements: !ruby/object:Gem::Requirement
|
71
57
|
requirements:
|
72
|
-
- - "
|
58
|
+
- - ">"
|
73
59
|
- !ruby/object:Gem::Version
|
74
60
|
version: '0.5'
|
75
61
|
- !ruby/object:Gem::Dependency
|
@@ -109,6 +95,7 @@ extra_rdoc_files: []
|
|
109
95
|
files:
|
110
96
|
- ".github/FUNDING.yml"
|
111
97
|
- ".gitignore"
|
98
|
+
- ".travis.yml"
|
112
99
|
- Gemfile
|
113
100
|
- Gemfile.lock
|
114
101
|
- LICENCE
|
@@ -117,6 +104,7 @@ files:
|
|
117
104
|
- app/assets/config/manifest.js
|
118
105
|
- app/helpers/hot_glue/controller_helper.rb
|
119
106
|
- app/helpers/hot_glue_helper.rb
|
107
|
+
- app/views/layouts/_flash_notices.erb
|
120
108
|
- bin/rails
|
121
109
|
- config/database.yml
|
122
110
|
- db/migrate/20210306212711_create_abcs.rb
|
@@ -133,6 +121,8 @@ files:
|
|
133
121
|
- lib/generators/hot_glue/markup_templates/slim.rb
|
134
122
|
- lib/generators/hot_glue/scaffold_generator.rb
|
135
123
|
- lib/generators/hot_glue/templates/base_controller.rb.erb
|
124
|
+
- lib/generators/hot_glue/templates/capybara_login.rb
|
125
|
+
- lib/generators/hot_glue/templates/confirmable.js
|
136
126
|
- lib/generators/hot_glue/templates/controller.rb.erb
|
137
127
|
- lib/generators/hot_glue/templates/erb/_errors.erb
|
138
128
|
- lib/generators/hot_glue/templates/erb/_flash_notices.erb
|
@@ -173,24 +163,24 @@ licenses:
|
|
173
163
|
- Nonstandard
|
174
164
|
metadata:
|
175
165
|
source_code_uri: https://github.com/jasonfb/hot-glue
|
176
|
-
documentation_uri: https://
|
177
|
-
homepage_uri: https://
|
166
|
+
documentation_uri: https://jasonfleetwoodboldt.com/hot-glue/
|
167
|
+
homepage_uri: https://github.com/jasonfb/hot-glue
|
178
168
|
post_install_message: |
|
179
169
|
---------------------------------------------
|
180
170
|
Welcome to Hot Glue - A Scaffold Building Companion for Hotwire + Turbo-Rails
|
181
171
|
|
182
172
|
rails generate hot_glue:scaffold Thing
|
183
173
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
174
|
+
* Build plug-and-play scaffolding mixing generated ERB or HAML with the power of Hotwire and Turbo-Rails
|
175
|
+
* Everything edits-in-place (unless you use --big-edit, then it won't)
|
176
|
+
* Automatically Reads Your Models (make them before building your scaffolding!)
|
177
|
+
* Excellent for CREATE-READ-UPDATE-DELETE (CRUD), lists with pagination (coming soon: searching & sorting)
|
178
|
+
* Great for prototyping, but you should learn Rails fundamentals first.
|
179
|
+
* 'Packaged' with Devise, Kaminari, Rspec, FontAwesome
|
180
|
+
* Create system specs automatically along with the generated code.
|
181
|
+
* Nest your routes model-by-model for built-in poor man's authentication.
|
182
|
+
* Throw the scaffolding away when your app is ready to graduate to its next phase.
|
183
|
+
* docs at https://github.com/jasonfb/hot-glue
|
194
184
|
---------------------------------------------
|
195
185
|
rdoc_options: []
|
196
186
|
require_paths:
|
@@ -202,11 +192,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
192
|
version: '0'
|
203
193
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
194
|
requirements:
|
205
|
-
- - "
|
195
|
+
- - ">"
|
206
196
|
- !ruby/object:Gem::Version
|
207
|
-
version:
|
197
|
+
version: 1.3.1
|
208
198
|
requirements: []
|
209
|
-
rubygems_version: 3.1.
|
199
|
+
rubygems_version: 3.1.6
|
210
200
|
signing_key:
|
211
201
|
specification_version: 4
|
212
202
|
summary: A gem build scaffolding.
|