hot-glue 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/FUNDING.yml +2 -0
- data/.gitignore +16 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +196 -0
- data/LICENCE +13 -0
- data/README.md +262 -0
- data/Rakefile +32 -0
- data/app/helpers/hot_glue/controller_helper.rb +105 -0
- data/app/helpers/hot_glue_helper.rb +4 -0
- data/bin/rails +14 -0
- data/lib/generators/hot_glue/install_generator.rb +21 -0
- data/lib/generators/hot_glue/scaffold_generator.rb +674 -0
- data/lib/generators/hot_glue/templates/_errors.haml +5 -0
- data/lib/generators/hot_glue/templates/_flash_notices.haml +7 -0
- data/lib/generators/hot_glue/templates/_form.haml +4 -0
- data/lib/generators/hot_glue/templates/_line.haml +6 -0
- data/lib/generators/hot_glue/templates/_list.haml +9 -0
- data/lib/generators/hot_glue/templates/_new_button.haml +2 -0
- data/lib/generators/hot_glue/templates/_show.haml +7 -0
- data/lib/generators/hot_glue/templates/base_controller.rb +3 -0
- data/lib/generators/hot_glue/templates/controller.rb +125 -0
- data/lib/generators/hot_glue/templates/controller_spec.rb +110 -0
- data/lib/generators/hot_glue/templates/create.turbo_stream.haml +5 -0
- data/lib/generators/hot_glue/templates/destroy.turbo_stream.haml +2 -0
- data/lib/generators/hot_glue/templates/edit.haml +19 -0
- data/lib/generators/hot_glue/templates/edit.turbo_stream.haml +4 -0
- data/lib/generators/hot_glue/templates/index.haml +9 -0
- data/lib/generators/hot_glue/templates/new.haml +10 -0
- data/lib/generators/hot_glue/templates/update.turbo_stream.haml +5 -0
- data/lib/hot-glue.rb +28 -0
- data/lib/hotglue/engine.rb +6 -0
- data/lib/hotglue/version.rb +3 -0
- metadata +178 -0
@@ -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,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
|
+
|
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,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,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,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"
|
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
|
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: []
|