rails_app_generator 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/after_templates/README.md +3 -0
- data/after_templates/___base_template.rb +1 -0
- data/after_templates/___r7_hotwire.rb +1 -0
- data/after_templates/rag_bootstrap/application-yield.html.erb +5 -0
- data/after_templates/rag_bootstrap/application.html.erb +4 -0
- data/after_templates/rag_bootstrap/component-cards-fancy.css +84 -0
- data/after_templates/rag_bootstrap/component-cards-fancy.html +80 -0
- data/after_templates/rag_bootstrap/component-cards-staff.css +90 -0
- data/after_templates/rag_bootstrap/component-cards-staff.html +140 -0
- data/after_templates/rag_bootstrap/component-cards-styled.html +31 -0
- data/after_templates/rag_bootstrap/component-footer.html +34 -0
- data/after_templates/rag_bootstrap/component-hero.html +15 -0
- data/after_templates/rag_bootstrap/component-nav.html +36 -0
- data/after_templates/rag_bootstrap/custom-bootstrap-import.scss +5 -0
- data/after_templates/rag_bootstrap/custom-using-css.css +3 -0
- data/after_templates/rag_bootstrap/custom-using-scss.scss +5 -0
- data/after_templates/rag_bootstrap/manifest.js +3 -0
- data/after_templates/rag_bootstrap.rb +1 -0
- data/after_templates/rag_simple.rb +25 -0
- data/after_templates/rag_tailwind.rb +74 -0
- data/lib/rails_app_generator/app_generator.rb +47 -5
- data/lib/rails_app_generator/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/rag-bootstrap.json +2 -0
- data/profiles/rag-simple.json +2 -1
- data/profiles/rag-tailwind.json +12 -0
- metadata +36 -3
- data/after_templates/test.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41476a3a9b133970991c3fbf3562c102ba8249f5b682233f20d84884fb8af678
|
4
|
+
data.tar.gz: 3a9cf1a5878bbee17e0cfff3c6facac2c8af128bd940ce5bdc6bd5894b6c8cf3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c88ba2a2ea096fd88795844acd1437af6cc87398f63002ad34dfe99576284ef8ede1e6f34c57b1fe7be9b4fccf174d25211a9084ee8691004c7ed243bc6c061
|
7
|
+
data.tar.gz: 0a16711784c631424eea1d80174697b1e04df33d8803b0963e23b76f70c625ceaa05815b665c81ea78c6958872676632187d487e160e1781e90b914d93a1ef00
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [0.0.7](https://github.com/klueless-io/rails_app_generator/compare/v0.0.6...v0.0.7) (2022-07-22)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add support for profiles and after templates ([1ecf4ab](https://github.com/klueless-io/rails_app_generator/commit/1ecf4abef1bc0f45928a33319ed9db8bebe1c27a))
|
7
|
+
|
1
8
|
## [0.0.6](https://github.com/klueless-io/rails_app_generator/compare/v0.0.5...v0.0.6) (2022-07-21)
|
2
9
|
|
3
10
|
|
data/after_templates/README.md
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
# frozen_string_literal: true
|
@@ -0,0 +1 @@
|
|
1
|
+
# frozen_string_literal: true
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<%= stylesheet_link_tag "custom-using-css" %>
|
2
|
+
<%= stylesheet_link_tag "custom-using-scss" %>
|
3
|
+
<%= stylesheet_link_tag "custom-component" %>
|
4
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
@@ -0,0 +1,84 @@
|
|
1
|
+
// Cards 1 : Source: https://codepen.io/donho_zamo/pen/YzXzPXZ
|
2
|
+
|
3
|
+
/*---- Main Style ----*/
|
4
|
+
#cards_landscape_wrap-2{
|
5
|
+
text-align: center;
|
6
|
+
background: #F7F7F7;
|
7
|
+
}
|
8
|
+
#cards_landscape_wrap-2 .container{
|
9
|
+
padding-top: 80px;
|
10
|
+
padding-bottom: 100px;
|
11
|
+
}
|
12
|
+
#cards_landscape_wrap-2 a{
|
13
|
+
text-decoration: none;
|
14
|
+
outline: none;
|
15
|
+
}
|
16
|
+
#cards_landscape_wrap-2 .card-flyer {
|
17
|
+
border-radius: 5px;
|
18
|
+
}
|
19
|
+
#cards_landscape_wrap-2 .card-flyer .image-box{
|
20
|
+
background: #ffffff;
|
21
|
+
overflow: hidden;
|
22
|
+
box-shadow: 0px 2px 15px rgba(0, 0, 0, 0.50);
|
23
|
+
border-radius: 5px;
|
24
|
+
}
|
25
|
+
#cards_landscape_wrap-2 .card-flyer .image-box img{
|
26
|
+
-webkit-transition:all .9s ease;
|
27
|
+
-moz-transition:all .9s ease;
|
28
|
+
-o-transition:all .9s ease;
|
29
|
+
-ms-transition:all .9s ease;
|
30
|
+
width: 100%;
|
31
|
+
height: 200px;
|
32
|
+
}
|
33
|
+
#cards_landscape_wrap-2 .card-flyer:hover .image-box img{
|
34
|
+
opacity: 0.7;
|
35
|
+
-webkit-transform:scale(1.15);
|
36
|
+
-moz-transform:scale(1.15);
|
37
|
+
-ms-transform:scale(1.15);
|
38
|
+
-o-transform:scale(1.15);
|
39
|
+
transform:scale(1.15);
|
40
|
+
}
|
41
|
+
#cards_landscape_wrap-2 .card-flyer .text-box{
|
42
|
+
text-align: center;
|
43
|
+
}
|
44
|
+
#cards_landscape_wrap-2 .card-flyer .text-box .text-container{
|
45
|
+
padding: 30px 18px;
|
46
|
+
}
|
47
|
+
#cards_landscape_wrap-2 .card-flyer{
|
48
|
+
background: #FFFFFF;
|
49
|
+
margin-top: 50px;
|
50
|
+
-webkit-transition: all 0.2s ease-in;
|
51
|
+
-moz-transition: all 0.2s ease-in;
|
52
|
+
-ms-transition: all 0.2s ease-in;
|
53
|
+
-o-transition: all 0.2s ease-in;
|
54
|
+
transition: all 0.2s ease-in;
|
55
|
+
box-shadow: 0px 3px 4px rgba(0, 0, 0, 0.40);
|
56
|
+
}
|
57
|
+
#cards_landscape_wrap-2 .card-flyer:hover{
|
58
|
+
background: #fff;
|
59
|
+
box-shadow: 0px 15px 26px rgba(0, 0, 0, 0.50);
|
60
|
+
-webkit-transition: all 0.2s ease-in;
|
61
|
+
-moz-transition: all 0.2s ease-in;
|
62
|
+
-ms-transition: all 0.2s ease-in;
|
63
|
+
-o-transition: all 0.2s ease-in;
|
64
|
+
transition: all 0.2s ease-in;
|
65
|
+
margin-top: 50px;
|
66
|
+
}
|
67
|
+
#cards_landscape_wrap-2 .card-flyer .text-box p{
|
68
|
+
margin-top: 10px;
|
69
|
+
margin-bottom: 0px;
|
70
|
+
padding-bottom: 0px;
|
71
|
+
font-size: 14px;
|
72
|
+
letter-spacing: 1px;
|
73
|
+
color: #000000;
|
74
|
+
}
|
75
|
+
#cards_landscape_wrap-2 .card-flyer .text-box h6{
|
76
|
+
margin-top: 0px;
|
77
|
+
margin-bottom: 4px;
|
78
|
+
font-size: 18px;
|
79
|
+
font-weight: bold;
|
80
|
+
text-transform: uppercase;
|
81
|
+
font-family: 'Roboto Black', sans-serif;
|
82
|
+
letter-spacing: 1px;
|
83
|
+
color: #00acc1;
|
84
|
+
}
|
@@ -0,0 +1,80 @@
|
|
1
|
+
<!-- Topic Cards -->
|
2
|
+
<div id="cards_landscape_wrap-2">
|
3
|
+
<div class="container">
|
4
|
+
<div class="row">
|
5
|
+
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">
|
6
|
+
<a href="">
|
7
|
+
<div class="card-flyer">
|
8
|
+
<div class="text-box">
|
9
|
+
<div class="image-box">
|
10
|
+
<img src="https://cdn.pixabay.com/photo/2018/03/30/15/11/deer-3275594_960_720.jpg" alt="" />
|
11
|
+
</div>
|
12
|
+
<div class="text-container">
|
13
|
+
<h6>Title 01</h6>
|
14
|
+
<p>
|
15
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
|
16
|
+
industry's standard dummy text ever since the 1500s.
|
17
|
+
</p>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</a>
|
22
|
+
</div>
|
23
|
+
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">
|
24
|
+
<a href="">
|
25
|
+
<div class="card-flyer">
|
26
|
+
<div class="text-box">
|
27
|
+
<div class="image-box">
|
28
|
+
<img src="https://cdn.pixabay.com/photo/2018/04/09/19/55/low-poly-3305284_960_720.jpg" alt="" />
|
29
|
+
</div>
|
30
|
+
<div class="text-container">
|
31
|
+
<h6>Title 02</h6>
|
32
|
+
<p>
|
33
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
|
34
|
+
industry's standard dummy text ever since the 1500s.
|
35
|
+
</p>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
</a>
|
40
|
+
</div>
|
41
|
+
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">
|
42
|
+
<a href="">
|
43
|
+
<div class="card-flyer">
|
44
|
+
<div class="text-box">
|
45
|
+
<div class="image-box">
|
46
|
+
<img src="https://cdn.pixabay.com/photo/2018/04/06/13/46/poly-3295856_960_720.png" alt="" />
|
47
|
+
</div>
|
48
|
+
|
49
|
+
<div class="text-container">
|
50
|
+
<h6>Title 03</h6>
|
51
|
+
<p>
|
52
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
|
53
|
+
industry's standard dummy text ever since the 1500s.
|
54
|
+
</p>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
</a>
|
59
|
+
</div>
|
60
|
+
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">
|
61
|
+
<a href="">
|
62
|
+
<div class="card-flyer">
|
63
|
+
<div class="text-box">
|
64
|
+
<div class="image-box">
|
65
|
+
<img src="https://cdn.pixabay.com/photo/2018/03/30/15/12/dog-3275593_960_720.jpg" alt="" />
|
66
|
+
</div>
|
67
|
+
<div class="text-container">
|
68
|
+
<h6>Title 04</h6>
|
69
|
+
<p>
|
70
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
|
71
|
+
industry's standard dummy text ever since the 1500s.
|
72
|
+
</p>
|
73
|
+
</div>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
</a>
|
77
|
+
</div>
|
78
|
+
</div>
|
79
|
+
</div>
|
80
|
+
</div>
|
@@ -0,0 +1,90 @@
|
|
1
|
+
// Cards 2 - Source: https://codepen.io/design007/pen/KKmbZzm
|
2
|
+
|
3
|
+
@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap');
|
4
|
+
@import url('https://use.fontawesome.com/releases/v5.13.0/css/all.css');
|
5
|
+
:root {
|
6
|
+
--font3: 'Roboto', sans-serif;
|
7
|
+
}
|
8
|
+
|
9
|
+
.h1,
|
10
|
+
h1 {
|
11
|
+
font-size: 1.5rem;
|
12
|
+
}
|
13
|
+
|
14
|
+
.container-fluid {
|
15
|
+
max-width: 1400px;
|
16
|
+
}
|
17
|
+
|
18
|
+
.card {
|
19
|
+
background: #fff;
|
20
|
+
box-shadow: 0 6px 10px rgba(0, 0, 0, 0.08), 0 0 6px rgba(0, 0, 0, 0.05);
|
21
|
+
border: 1;
|
22
|
+
border-radius: 1rem;
|
23
|
+
}
|
24
|
+
|
25
|
+
.img-hover-zoom--colorize img {
|
26
|
+
border-radius: 50%;
|
27
|
+
width: 150px;
|
28
|
+
height: auto;
|
29
|
+
margin-top: 20px;
|
30
|
+
padding: 1px;
|
31
|
+
transition: transform 0.5s;
|
32
|
+
filter: grayscale(100%);
|
33
|
+
}
|
34
|
+
|
35
|
+
.img-hover-zoom--colorize:hover img {
|
36
|
+
filter: grayscale(0);
|
37
|
+
transform: scale(1.05);
|
38
|
+
}
|
39
|
+
|
40
|
+
.card h5 {
|
41
|
+
overflow: hidden;
|
42
|
+
height: 80px;
|
43
|
+
font-weight: 300;
|
44
|
+
font-size: 1rem;
|
45
|
+
}
|
46
|
+
|
47
|
+
.card h5 a {
|
48
|
+
color: black;
|
49
|
+
text-decoration: none;
|
50
|
+
}
|
51
|
+
|
52
|
+
.role {
|
53
|
+
color: #7a7a7a;
|
54
|
+
}
|
55
|
+
|
56
|
+
.box {
|
57
|
+
display: flex;
|
58
|
+
align-items: center;
|
59
|
+
justify-content: center;
|
60
|
+
}
|
61
|
+
|
62
|
+
.fab {
|
63
|
+
font-size: 1.5rem;
|
64
|
+
color: darkgray;
|
65
|
+
transition: transform 0.5s;
|
66
|
+
}
|
67
|
+
|
68
|
+
.fab:hover {
|
69
|
+
color: black;
|
70
|
+
transform: scale(1.1);
|
71
|
+
}
|
72
|
+
|
73
|
+
.card h2 {
|
74
|
+
font-size: 1rem;
|
75
|
+
}
|
76
|
+
|
77
|
+
/* MEDIA */
|
78
|
+
|
79
|
+
@media only screen and (min-width: 1200px) {
|
80
|
+
.img-hover-zoom--colorize img {
|
81
|
+
width: 200px;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
@media only screen and (min-width: 1200px) {
|
86
|
+
.h1,
|
87
|
+
h1 {
|
88
|
+
font-size: 2rem;
|
89
|
+
}
|
90
|
+
}
|
@@ -0,0 +1,140 @@
|
|
1
|
+
<div class="container p-5">
|
2
|
+
<div class="row row-cols-1 row-cols-xs-2 row-cols-sm-2 row-cols-lg-4 g-3">
|
3
|
+
<div class="col">
|
4
|
+
<div class="card h-100 shadow-sm">
|
5
|
+
<div class="text-center">
|
6
|
+
<div class="img-hover-zoom img-hover-zoom--colorize">
|
7
|
+
<img
|
8
|
+
class="shadow"
|
9
|
+
src="https://source.unsplash.com/rDEOVtE7vOs/600x600"
|
10
|
+
alt="Another Image zoom-on-hover effect"
|
11
|
+
/>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="card-body">
|
16
|
+
<div class="clearfix mb-3"></div>
|
17
|
+
|
18
|
+
<div class="my-2 text-center">
|
19
|
+
<h1>Mia Wallace</h1>
|
20
|
+
</div>
|
21
|
+
<div class="mb-3">
|
22
|
+
<h2 class="text-uppercase text-center role">Senior Frontend Developer</h2>
|
23
|
+
</div>
|
24
|
+
<div class="box">
|
25
|
+
<div>
|
26
|
+
<ul class="list-inline">
|
27
|
+
<li class="list-inline-item"><i class="fab fa-github"></i></li>
|
28
|
+
<li class="list-inline-item"><i class="fab fa-linkedin-in"></i></li>
|
29
|
+
<li class="list-inline-item"><i class="fab fa-instagram"></i></li>
|
30
|
+
<li class="list-inline-item"><i class="fab fa-twitter"></i></li>
|
31
|
+
</ul>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
<div class="col">
|
38
|
+
<div class="card h-100 shadow-sm">
|
39
|
+
<div class="text-center">
|
40
|
+
<div class="img-hover-zoom img-hover-zoom--colorize">
|
41
|
+
<img
|
42
|
+
class="shadow"
|
43
|
+
src="https://source.unsplash.com/XHVpWcr5grQ/600x600"
|
44
|
+
alt="Another Image zoom-on-hover effect"
|
45
|
+
/>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
|
49
|
+
<div class="card-body">
|
50
|
+
<div class="clearfix mb-3"></div>
|
51
|
+
|
52
|
+
<div class="my-2 text-center">
|
53
|
+
<h1>Vincent Vega</h1>
|
54
|
+
</div>
|
55
|
+
<div class="mb-3">
|
56
|
+
<h2 class="text-uppercase text-center role">SEO Specialist</h2>
|
57
|
+
</div>
|
58
|
+
<div class="box">
|
59
|
+
<div>
|
60
|
+
<ul class="list-inline">
|
61
|
+
<li class="list-inline-item"><i class="fab fa-github"></i></li>
|
62
|
+
<li class="list-inline-item"><i class="fab fa-linkedin-in"></i></li>
|
63
|
+
<li class="list-inline-item"><i class="fab fa-instagram"></i></li>
|
64
|
+
<li class="list-inline-item"><i class="fab fa-twitter"></i></li>
|
65
|
+
</ul>
|
66
|
+
</div>
|
67
|
+
</div>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
<div class="col">
|
72
|
+
<div class="card h-100 shadow-sm">
|
73
|
+
<div class="text-center">
|
74
|
+
<div class="img-hover-zoom img-hover-zoom--colorize">
|
75
|
+
<img
|
76
|
+
class="shadow"
|
77
|
+
src="https://source.unsplash.com/n4KewLKFOZw/600x600"
|
78
|
+
alt="Another Image zoom-on-hover effect"
|
79
|
+
/>
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
|
83
|
+
<div class="card-body">
|
84
|
+
<div class="clearfix mb-3"></div>
|
85
|
+
|
86
|
+
<div class="my-2 text-center">
|
87
|
+
<h1>Mr. Wolf</h1>
|
88
|
+
</div>
|
89
|
+
<div class="mb-3">
|
90
|
+
<h2 class="text-uppercase text-center role">DIGITAL MARKETING SPECIALIST</h2>
|
91
|
+
</div>
|
92
|
+
<div class="box">
|
93
|
+
<div>
|
94
|
+
<ul class="list-inline">
|
95
|
+
<li class="list-inline-item"><i class="fab fa-github"></i></li>
|
96
|
+
<li class="list-inline-item"><i class="fab fa-linkedin-in"></i></li>
|
97
|
+
<li class="list-inline-item"><i class="fab fa-instagram"></i></li>
|
98
|
+
<li class="list-inline-item"><i class="fab fa-twitter"></i></li>
|
99
|
+
</ul>
|
100
|
+
</div>
|
101
|
+
</div>
|
102
|
+
</div>
|
103
|
+
</div>
|
104
|
+
</div>
|
105
|
+
<div class="col">
|
106
|
+
<div class="card h-100 shadow-sm">
|
107
|
+
<div class="text-center">
|
108
|
+
<div class="img-hover-zoom img-hover-zoom--colorize">
|
109
|
+
<img
|
110
|
+
class="shadow"
|
111
|
+
src="https://source.unsplash.com/B4TjXnI0Y2c/600x600"
|
112
|
+
alt="Another Image zoom-on-hover effect"
|
113
|
+
/>
|
114
|
+
</div>
|
115
|
+
</div>
|
116
|
+
|
117
|
+
<div class="card-body">
|
118
|
+
<div class="clearfix mb-3"></div>
|
119
|
+
|
120
|
+
<div class="my-2 text-center">
|
121
|
+
<h1>O-Ren Ishii</h1>
|
122
|
+
</div>
|
123
|
+
<div class="mb-3">
|
124
|
+
<h2 class="text-uppercase text-center role">Web Developer</h2>
|
125
|
+
</div>
|
126
|
+
<div class="box">
|
127
|
+
<div>
|
128
|
+
<ul class="list-inline">
|
129
|
+
<li class="list-inline-item"><i class="fab fa-github"></i></li>
|
130
|
+
<li class="list-inline-item"><i class="fab fa-linkedin-in"></i></li>
|
131
|
+
<li class="list-inline-item"><i class="fab fa-instagram"></i></li>
|
132
|
+
<li class="list-inline-item"><i class="fab fa-twitter"></i></li>
|
133
|
+
</ul>
|
134
|
+
</div>
|
135
|
+
</div>
|
136
|
+
</div>
|
137
|
+
</div>
|
138
|
+
</div>
|
139
|
+
</div>
|
140
|
+
</div>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<div class="m-4">
|
2
|
+
<div class="row row-cols-1 row-cols-md-3 g-3">
|
3
|
+
<div class="col">
|
4
|
+
<!-- Card with default left text alignment -->
|
5
|
+
<div class="card">
|
6
|
+
<div class="card-body card1">
|
7
|
+
<h3 class="card-title">Bootstrap @import</h3>
|
8
|
+
<p class="card-text">Use standard SAAS transpiling</p>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<div class="col">
|
13
|
+
<!-- Card with center text alignment -->
|
14
|
+
<div class="card text-center">
|
15
|
+
<div class="card-body card2">
|
16
|
+
<h3 class="card-title">CSS</h3>
|
17
|
+
<p class="card-text">Using plain CSS files</p>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<div class="col">
|
22
|
+
<!-- Card with right text alignment -->
|
23
|
+
<div class="card text-end">
|
24
|
+
<div class="card-body card3">
|
25
|
+
<h3 class="card-title">SCSS</h3>
|
26
|
+
<p class="card-text">Using SASS/SCSS files</p>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<footer class="bg-dark text-center text-white">
|
2
|
+
<!-- Grid container -->
|
3
|
+
<div class="container p-4 pb-0">
|
4
|
+
<!-- Section: Social media -->
|
5
|
+
<section class="mb-4">
|
6
|
+
<!-- Facebook -->
|
7
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-facebook-f"></i></a>
|
8
|
+
|
9
|
+
<!-- Twitter -->
|
10
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-twitter"></i></a>
|
11
|
+
|
12
|
+
<!-- Google -->
|
13
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-google"></i></a>
|
14
|
+
|
15
|
+
<!-- Instagram -->
|
16
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-instagram"></i></a>
|
17
|
+
|
18
|
+
<!-- Linkedin -->
|
19
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-linkedin-in"></i></a>
|
20
|
+
|
21
|
+
<!-- Github -->
|
22
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-github"></i></a>
|
23
|
+
</section>
|
24
|
+
<!-- Section: Social media -->
|
25
|
+
</div>
|
26
|
+
<!-- Grid container -->
|
27
|
+
|
28
|
+
<!-- Copyright -->
|
29
|
+
<div class="text-center p-3" style="background-color: rgba(0, 0, 0, 0.2)">
|
30
|
+
© 2020 Copyright:
|
31
|
+
<a class="text-white" href="https://mdbootstrap.com/">MDBootstrap.com</a>
|
32
|
+
</div>
|
33
|
+
<!-- Copyright -->
|
34
|
+
</footer>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="px-4 pt-5 my-5 text-center border-bottom">
|
2
|
+
<h1 class="display-4 fw-bold">Centered screenshot</h1>
|
3
|
+
<div class="col-lg-6 mx-auto">
|
4
|
+
<p class="lead mb-4">Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.</p>
|
5
|
+
<div class="d-grid gap-2 d-sm-flex justify-content-sm-center mb-5">
|
6
|
+
<button type="button" class="btn btn-primary btn-lg px-4 me-sm-3" data-bs-toggle="modal" data-bs-target="#exampleModal">Click Me</button>
|
7
|
+
<%= link_to 'People', people_path, class: "btn btn-outline-secondary btn-lg px-4" %>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<div class="overflow-hidden" style="max-height: 30vh;">
|
11
|
+
<div class="container px-5">
|
12
|
+
<img src="https://getbootstrap.com/docs/5.0/examples/heroes/bootstrap-themes.png" class="img-fluid border rounded-3 shadow-lg mb-4" alt="Example image" width="700" height="500" loading="lazy">
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
2
|
+
<div class="container-fluid">
|
3
|
+
<a class="navbar-brand" href="#">Navbar</a>
|
4
|
+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
5
|
+
<span class="navbar-toggler-icon"></span>
|
6
|
+
</button>
|
7
|
+
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
8
|
+
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
9
|
+
<li class="nav-item">
|
10
|
+
<a class="nav-link active" aria-current="page" href="#">Home</a>
|
11
|
+
</li>
|
12
|
+
<li class="nav-item">
|
13
|
+
<a class="nav-link" href="#">Link</a>
|
14
|
+
</li>
|
15
|
+
<li class="nav-item dropdown">
|
16
|
+
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
17
|
+
Dropdown
|
18
|
+
</a>
|
19
|
+
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
|
20
|
+
<li><a class="dropdown-item" href="#">Action</a></li>
|
21
|
+
<li><a class="dropdown-item" href="#">Another action</a></li>
|
22
|
+
<li><hr class="dropdown-divider"></li>
|
23
|
+
<li><a class="dropdown-item" href="#">Something else here</a></li>
|
24
|
+
</ul>
|
25
|
+
</li>
|
26
|
+
<li class="nav-item">
|
27
|
+
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
|
28
|
+
</li>
|
29
|
+
</ul>
|
30
|
+
<form class="d-flex">
|
31
|
+
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
|
32
|
+
<button class="btn btn-outline-success" type="submit">Search</button>
|
33
|
+
</form>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</nav>
|
@@ -0,0 +1 @@
|
|
1
|
+
# frozen_string_literal: true
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Rails 7 with Bootstrap CSS and custom CSS
|
4
|
+
# https://www.youtube.com/watch?v=tYr8yn7yRKw
|
5
|
+
|
6
|
+
require 'pry'
|
7
|
+
|
8
|
+
self.local_template_path = File.join(File.dirname(__FILE__), 'rag_simple')
|
9
|
+
|
10
|
+
gac 'base rails 7 image created'
|
11
|
+
|
12
|
+
def application_html
|
13
|
+
<<-HTML
|
14
|
+
<div class="container">
|
15
|
+
<div class="row">
|
16
|
+
<%= yield %>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
HTML
|
20
|
+
end
|
21
|
+
|
22
|
+
gsub_file 'app/views/layouts/application.html.erb' , %( <%= yield %>), application_html
|
23
|
+
|
24
|
+
# after_bundle do
|
25
|
+
# end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Rails 7 with Bootstrap CSS and custom CSS
|
4
|
+
# resources:
|
5
|
+
# https://www.youtube.com/watch?v=tYr8yn7yRKw
|
6
|
+
# https://youtu.be/phOUsR0dm5s?t=493
|
7
|
+
# https://www.youtube.com/watch?v=nxKDTtuKOo4
|
8
|
+
|
9
|
+
require 'pry'
|
10
|
+
|
11
|
+
self.local_template_path = File.join(File.dirname(__FILE__), 'rag_bootstrap')
|
12
|
+
|
13
|
+
gac 'base rails 7 image created'
|
14
|
+
|
15
|
+
add_controller('home', 'index', 'about')
|
16
|
+
route("root 'home#index'")
|
17
|
+
|
18
|
+
# # need a join template method
|
19
|
+
# index_content = join_templates(
|
20
|
+
# 'component-nav.html',
|
21
|
+
# 'component-hero.html',
|
22
|
+
# 'component-cards-fancy.html',
|
23
|
+
# 'component-cards-staff.html',
|
24
|
+
# 'component-cards-styled.html',
|
25
|
+
# 'component-modal.html',
|
26
|
+
# 'component-footer.html',
|
27
|
+
# )
|
28
|
+
|
29
|
+
# move the nav bar into
|
30
|
+
# 'app/views/shared/_navbar.html.erb'
|
31
|
+
# and add the nav bar to the layout
|
32
|
+
# 'app/views/layouts/application.html.erb'
|
33
|
+
# <%= render partial: 'shared/navbar' %>
|
34
|
+
|
35
|
+
# create_file 'app/views/home/index.html.erb', index_content, force: true
|
36
|
+
|
37
|
+
# gem 'sassc-rails'
|
38
|
+
|
39
|
+
after_bundle do
|
40
|
+
# add_css_customizations
|
41
|
+
|
42
|
+
# add_crud_people
|
43
|
+
|
44
|
+
# rails_command("db:migrate")
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_css_customizations
|
48
|
+
# Update the manifest to include the stylesheets
|
49
|
+
append_to_file 'app/assets/config/manifest.js' , read_template('manifest.js')
|
50
|
+
|
51
|
+
# This is how you would add custom styling via @import in the application.bootstrap.css
|
52
|
+
append_to_file 'app/assets/stylesheets/application.bootstrap.scss' , "@import 'custom-bootstrap-import.scss';"
|
53
|
+
create_file 'app/assets/stylesheets/custom-bootstrap-import.scss' , read_template('custom-bootstrap-import.scss')
|
54
|
+
|
55
|
+
# This is how you would add custom styling using standard CSS
|
56
|
+
create_file 'app/assets/stylesheets/custom-using-css.css' , read_template('custom-using-css.css')
|
57
|
+
|
58
|
+
# This is how you would add custom styling using standard SAAS/SCSS
|
59
|
+
create_file 'app/assets/stylesheets/custom-using-scss.scss' , read_template('custom-using-scss.scss')
|
60
|
+
|
61
|
+
# This is custom CSS for the fancier components
|
62
|
+
create_file 'app/assets/stylesheets/custom-component.css' , join_templates('component-cards-fancy.css', 'component-cards-staff.css')
|
63
|
+
|
64
|
+
# Update the layout so that the stylesheets are included
|
65
|
+
insert_into_file 'app/views/layouts/application.html.erb', read_template('application.html.erb'),
|
66
|
+
before: %( <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>)
|
67
|
+
gsub_file 'app/views/layouts/application.html.erb', %( <%= yield %>), read_template('application-yield.html.erb')
|
68
|
+
end
|
69
|
+
|
70
|
+
def add_crud_people
|
71
|
+
# Need to get the bootstrap form styling working
|
72
|
+
# Follow the instructions at: https://youtu.be/phOUsR0dm5s?t=493
|
73
|
+
add_scaffold('people', 'first_name', 'last_name', 'age:integer', 'address:text')
|
74
|
+
end
|
@@ -171,6 +171,14 @@ module RailsAppGenerator
|
|
171
171
|
end
|
172
172
|
|
173
173
|
no_commands do
|
174
|
+
# USED BY AFTER_TEMPLATE
|
175
|
+
def gac(message)
|
176
|
+
return unless active?(:git)
|
177
|
+
|
178
|
+
git add: '.'
|
179
|
+
git commit: " -m '#{message}'"
|
180
|
+
end
|
181
|
+
|
174
182
|
def add_controller(name, *args)
|
175
183
|
generate(:controller, name, *args)
|
176
184
|
end
|
@@ -179,14 +187,28 @@ module RailsAppGenerator
|
|
179
187
|
generate(:scaffold, name, *args)
|
180
188
|
end
|
181
189
|
|
190
|
+
def read_template(template_file)
|
191
|
+
path = find_in_source_paths(template_file)
|
192
|
+
|
193
|
+
File.read(path)
|
194
|
+
end
|
195
|
+
|
196
|
+
def join_templates(*template_files, join: "\n\n")
|
197
|
+
template_files.map { |template_file| read_template(template_file) }.join(join)
|
198
|
+
end
|
199
|
+
|
200
|
+
# Local template path is handy when you want template files used when working with the --template flag
|
201
|
+
attr_accessor :local_template_path
|
202
|
+
|
182
203
|
def source_paths
|
183
|
-
[
|
184
|
-
|
185
|
-
|
186
|
-
|
204
|
+
paths = local_template_path ? [local_template_path] : []
|
205
|
+
paths << context.rails_override_template_path
|
206
|
+
paths << context.rails_template_path
|
207
|
+
paths
|
187
208
|
end
|
188
209
|
|
189
210
|
# Context wraps the configured options and can be made available to addons
|
211
|
+
# TODO: should I add local_template_path to the context?
|
190
212
|
def context
|
191
213
|
@context ||= Context.new(
|
192
214
|
self.class.rails_template_path,
|
@@ -210,8 +232,28 @@ module RailsAppGenerator
|
|
210
232
|
add(addon) if options[option_name]
|
211
233
|
end
|
212
234
|
|
235
|
+
def skip_flag?(option_name)
|
236
|
+
value = options["skip_#{option_name}".to_sym]
|
237
|
+
|
238
|
+
return false if value.nil?
|
239
|
+
|
240
|
+
value == true
|
241
|
+
end
|
242
|
+
|
243
|
+
def add_flag?(option_name)
|
244
|
+
value = options["add_#{option_name}".to_sym]
|
245
|
+
|
246
|
+
return false if value.nil?
|
247
|
+
|
248
|
+
value == true
|
249
|
+
end
|
250
|
+
|
251
|
+
def active?(option_name)
|
252
|
+
add_flag?(option_name) || !skip_flag?(option_name)
|
253
|
+
end
|
254
|
+
|
213
255
|
def uses?(addon)
|
214
|
-
return false
|
256
|
+
return false unless active?(addon)
|
215
257
|
|
216
258
|
addon = AddOn.get(addon)
|
217
259
|
Dependencies.new(addon, context).satisfied?
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "rails_app_generator",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.8",
|
4
4
|
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "rails_app_generator",
|
9
|
-
"version": "0.0.
|
9
|
+
"version": "0.0.8",
|
10
10
|
"devDependencies": {
|
11
11
|
"@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
|
12
12
|
"@semantic-release/changelog": "^6.0.1",
|
data/package.json
CHANGED
data/profiles/rag-bootstrap.json
CHANGED
data/profiles/rag-simple.json
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
{
|
2
|
+
"args": {
|
3
|
+
"app_path": "tailwind",
|
4
|
+
"destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/rag"
|
5
|
+
},
|
6
|
+
"opts": {
|
7
|
+
"skip_git": true,
|
8
|
+
"skip_test": true,
|
9
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/rag_tailwind.rb",
|
10
|
+
"css": "tailwind"
|
11
|
+
}
|
12
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_app_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-07-
|
11
|
+
date: 2022-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bootsnap
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: tailwindcss-rails
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: turbo-rails
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,7 +145,25 @@ files:
|
|
131
145
|
- README.md
|
132
146
|
- Rakefile
|
133
147
|
- after_templates/README.md
|
134
|
-
- after_templates/
|
148
|
+
- after_templates/___base_template.rb
|
149
|
+
- after_templates/___r7_hotwire.rb
|
150
|
+
- after_templates/rag_bootstrap.rb
|
151
|
+
- after_templates/rag_bootstrap/application-yield.html.erb
|
152
|
+
- after_templates/rag_bootstrap/application.html.erb
|
153
|
+
- after_templates/rag_bootstrap/component-cards-fancy.css
|
154
|
+
- after_templates/rag_bootstrap/component-cards-fancy.html
|
155
|
+
- after_templates/rag_bootstrap/component-cards-staff.css
|
156
|
+
- after_templates/rag_bootstrap/component-cards-staff.html
|
157
|
+
- after_templates/rag_bootstrap/component-cards-styled.html
|
158
|
+
- after_templates/rag_bootstrap/component-footer.html
|
159
|
+
- after_templates/rag_bootstrap/component-hero.html
|
160
|
+
- after_templates/rag_bootstrap/component-nav.html
|
161
|
+
- after_templates/rag_bootstrap/custom-bootstrap-import.scss
|
162
|
+
- after_templates/rag_bootstrap/custom-using-css.css
|
163
|
+
- after_templates/rag_bootstrap/custom-using-scss.scss
|
164
|
+
- after_templates/rag_bootstrap/manifest.js
|
165
|
+
- after_templates/rag_simple.rb
|
166
|
+
- after_templates/rag_tailwind.rb
|
135
167
|
- bin/console
|
136
168
|
- bin/setup
|
137
169
|
- exe/rag
|
@@ -192,6 +224,7 @@ files:
|
|
192
224
|
- profiles/rag-add-some-pages.json
|
193
225
|
- profiles/rag-bootstrap.json
|
194
226
|
- profiles/rag-simple.json
|
227
|
+
- profiles/rag-tailwind.json
|
195
228
|
- sig/rails_app_generator.rbs
|
196
229
|
- templates/README.md.erb
|
197
230
|
- templates/addons/annotate/auto_annotate_models.rake
|
data/after_templates/test.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'pry'
|
4
|
-
|
5
|
-
# after_bundle do
|
6
|
-
# setup_rails.after_bundle
|
7
|
-
# end
|
8
|
-
|
9
|
-
add_scaffold('post', 'title', 'content:text')
|
10
|
-
add_scaffold('book', 'title', 'content:text')
|
11
|
-
# add_resource("comment", "post:references", 'content:text')
|
12
|
-
# add_mailer("posts", "submitted", "broken")
|