rails_app_generator 0.0.5 → 0.0.8

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 (121) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/.vscode/settings.json +3 -0
  4. data/CHANGELOG.md +23 -0
  5. data/README.md +9 -0
  6. data/after_templates/README.md +3 -0
  7. data/after_templates/___base_template.rb +1 -0
  8. data/after_templates/___r7_hotwire.rb +1 -0
  9. data/after_templates/rag_bootstrap/application-yield.html.erb +5 -0
  10. data/after_templates/rag_bootstrap/application.html.erb +4 -0
  11. data/after_templates/rag_bootstrap/component-cards-fancy.css +84 -0
  12. data/after_templates/rag_bootstrap/component-cards-fancy.html +80 -0
  13. data/after_templates/rag_bootstrap/component-cards-staff.css +90 -0
  14. data/after_templates/rag_bootstrap/component-cards-staff.html +140 -0
  15. data/after_templates/rag_bootstrap/component-cards-styled.html +31 -0
  16. data/after_templates/rag_bootstrap/component-footer.html +34 -0
  17. data/after_templates/rag_bootstrap/component-hero.html +15 -0
  18. data/after_templates/rag_bootstrap/component-nav.html +36 -0
  19. data/after_templates/rag_bootstrap/custom-bootstrap-import.scss +5 -0
  20. data/after_templates/rag_bootstrap/custom-using-css.css +3 -0
  21. data/after_templates/rag_bootstrap/custom-using-scss.scss +5 -0
  22. data/after_templates/rag_bootstrap/manifest.js +3 -0
  23. data/after_templates/rag_bootstrap.rb +1 -0
  24. data/after_templates/rag_simple.rb +25 -0
  25. data/after_templates/rag_tailwind.rb +74 -0
  26. data/exe/rag +41 -0
  27. data/lib/rails_app_generator/add_on.rb +73 -0
  28. data/lib/rails_app_generator/addons/annotate.rb +15 -0
  29. data/lib/rails_app_generator/addons/continuous_integration.rb +14 -0
  30. data/lib/rails_app_generator/addons/devise.rb +50 -0
  31. data/lib/rails_app_generator/addons/docker.rb +14 -0
  32. data/lib/rails_app_generator/addons/docker_compose.rb +13 -0
  33. data/lib/rails_app_generator/addons/dotenv.rb +13 -0
  34. data/lib/rails_app_generator/addons/factory_bot.rb +19 -0
  35. data/lib/rails_app_generator/addons/foreman.rb +15 -0
  36. data/lib/rails_app_generator/addons/generators.rb +31 -0
  37. data/lib/rails_app_generator/addons/high_voltage.rb +15 -0
  38. data/lib/rails_app_generator/addons/inline_svg.rb +11 -0
  39. data/lib/rails_app_generator/addons/irbrc.rb +13 -0
  40. data/lib/rails_app_generator/addons/lograge.rb +13 -0
  41. data/lib/rails_app_generator/addons/pundit.rb +16 -0
  42. data/lib/rails_app_generator/addons/rspec.rb +17 -0
  43. data/lib/rails_app_generator/addons/rubocop.rb +13 -0
  44. data/lib/rails_app_generator/addons/scaffold.rb +15 -0
  45. data/lib/rails_app_generator/addons/services.rb +13 -0
  46. data/lib/rails_app_generator/addons/sidekiq.rb +18 -0
  47. data/lib/rails_app_generator/addons/stimulus.rb +15 -0
  48. data/lib/rails_app_generator/addons/stimulus_components.rb +33 -0
  49. data/lib/rails_app_generator/addons/tailwind.rb +22 -0
  50. data/lib/rails_app_generator/addons/views.rb +21 -0
  51. data/lib/rails_app_generator/app_builder.rb +7 -5
  52. data/lib/rails_app_generator/app_generator.rb +187 -99
  53. data/lib/rails_app_generator/context.rb +75 -0
  54. data/lib/rails_app_generator/dependencies.rb +34 -0
  55. data/lib/rails_app_generator/notes/a1.txt +1 -1
  56. data/lib/rails_app_generator/notes/a2.txt +1 -1
  57. data/lib/rails_app_generator/notes/kw01-b.txt +86 -0
  58. data/lib/rails_app_generator/notes/kw01.txt +91 -0
  59. data/lib/rails_app_generator/options/map_option_string.rb +2 -0
  60. data/lib/rails_app_generator/options/rails_options.rb +52 -32
  61. data/lib/rails_app_generator/starter.rb +17 -8
  62. data/lib/rails_app_generator/version.rb +1 -1
  63. data/lib/rails_app_generator.rb +5 -1
  64. data/package-lock.json +2 -2
  65. data/package.json +1 -1
  66. data/profiles/rag-add-some-pages.json +11 -0
  67. data/profiles/rag-bootstrap.json +12 -0
  68. data/profiles/rag-simple.json +11 -0
  69. data/profiles/rag-tailwind.json +12 -0
  70. data/templates/README.md.erb +43 -0
  71. data/templates/addons/annotate/auto_annotate_models.rake +60 -0
  72. data/templates/addons/continuous_integration/.github/workflows/build.yml.erb +49 -0
  73. data/templates/addons/devise/app/views/devise/confirmations/new.html.erb +24 -0
  74. data/templates/addons/devise/app/views/devise/passwords/edit.html.erb +34 -0
  75. data/templates/addons/devise/app/views/devise/passwords/new.html.erb +23 -0
  76. data/templates/addons/devise/app/views/devise/registrations/edit.html.erb +62 -0
  77. data/templates/addons/devise/app/views/devise/registrations/new.html.erb +45 -0
  78. data/templates/addons/devise/app/views/devise/sessions/new.html.erb +33 -0
  79. data/templates/addons/devise/app/views/devise/shared/_error_messages.html.erb +15 -0
  80. data/templates/addons/devise/app/views/devise/shared/_form_wrap.html.erb +5 -0
  81. data/templates/addons/devise/app/views/devise/shared/_links.html.erb +25 -0
  82. data/templates/addons/devise/app/views/devise/unlocks/new.html.erb +22 -0
  83. data/templates/addons/docker/.dockerignore.erb +51 -0
  84. data/templates/addons/docker/Dockerfile.erb +45 -0
  85. data/templates/addons/docker_compose/docker-compose.yml.erb +21 -0
  86. data/templates/addons/dotenv/.env.development.erb +3 -0
  87. data/templates/addons/foreman/.foreman.erb +1 -0
  88. data/templates/addons/foreman/Procfile.dev.erb +7 -0
  89. data/templates/addons/foreman/Procfile.erb +4 -0
  90. data/templates/addons/generators/lib/generators/rails/navigation/USAGE +6 -0
  91. data/templates/addons/generators/lib/generators/rails/navigation/navigation_generator.rb +16 -0
  92. data/templates/addons/generators/lib/generators/rails/scaffold_controller_generator.rb +12 -0
  93. data/templates/addons/high_voltage/config/initializers/high_voltage.rb +6 -0
  94. data/templates/addons/irbrc/.irbrc.erb +13 -0
  95. data/templates/addons/lograge/config/initializers/lograge.rb +5 -0
  96. data/templates/addons/pundit/app/controllers/authorized_controller.rb.erb +10 -0
  97. data/templates/addons/pundit/app/policies/application_policy.rb +57 -0
  98. data/templates/addons/rspec/spec/rails_helper.rb +26 -0
  99. data/templates/addons/rspec/spec/spec_helper.rb +61 -0
  100. data/templates/addons/rubocop/.rubocop.yml.erb +37 -0
  101. data/templates/addons/scaffold/lib/templates/erb/scaffold/_form.html.erb +39 -0
  102. data/templates/addons/scaffold/lib/templates/erb/scaffold/edit.html.erb +7 -0
  103. data/templates/addons/scaffold/lib/templates/erb/scaffold/index.html.erb +34 -0
  104. data/templates/addons/scaffold/lib/templates/erb/scaffold/new.html.erb +7 -0
  105. data/templates/addons/scaffold/lib/templates/erb/scaffold/show.html.erb +18 -0
  106. data/templates/addons/services/app/services/application_service.rb +15 -0
  107. data/templates/app_x/controllers/authorized_controller.rb.erb +10 -0
  108. data/templates/app_x/controllers/errors_controller.rb.erb +24 -0
  109. data/templates/app_x/javascript/images/checkmark.svg +1 -0
  110. data/templates/app_x/javascript/images/logo.svg +1 -0
  111. data/templates/app_x/javascript/stylesheets/components.scss +206 -0
  112. data/templates/app_x/views/errors/internal_error.html.erb +14 -0
  113. data/templates/app_x/views/errors/not_found.html.erb +14 -0
  114. data/templates/app_x/views/errors/unacceptable.html.erb +14 -0
  115. data/templates/app_x/views/layouts/application.html.erb.tt +30 -0
  116. data/templates/app_x/views/pages/home.html.erb.tt +20 -0
  117. data/templates/app_x/views/shared/_flashes.html.erb.tt +12 -0
  118. data/templates/app_x/views/shared/_footer.html.erb.tt +21 -0
  119. data/templates/app_x/views/shared/_navbar.html.erb.tt +55 -0
  120. data/templates/app_x/workers/application_worker.rb +5 -0
  121. metadata +207 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af4adc7a1c56e1146ad7c09a5de8e937a9dcf9c6dbe9c44b5792e498c5432050
4
- data.tar.gz: bfb7e1727d74d4090ad8ee9f5bad62091abfce6631e22164483527ae9cafa486
3
+ metadata.gz: 41476a3a9b133970991c3fbf3562c102ba8249f5b682233f20d84884fb8af678
4
+ data.tar.gz: 3a9cf1a5878bbee17e0cfff3c6facac2c8af128bd940ce5bdc6bd5894b6c8cf3
5
5
  SHA512:
6
- metadata.gz: c3e0485f02a267715227db3fd75c9e7b8f02d031661e40d3880edcc07a95f1351f7b94c5456456407d623b0ed3b2d8457e689a4f94cb6d9b5fc57f1ab0d11e68
7
- data.tar.gz: 7f7ec8819fb75ba55e0b4e20f5532382e8bca334ea6ee895e2eb73001b34423538ff8876c1e54370c394bc9cac4a2b45e909954cfb9e3d5292092f187619dfcb
6
+ metadata.gz: 5c88ba2a2ea096fd88795844acd1437af6cc87398f63002ad34dfe99576284ef8ede1e6f34c57b1fe7be9b4fccf174d25211a9084ee8691004c7ed243bc6c061
7
+ data.tar.gz: 0a16711784c631424eea1d80174697b1e04df33d8803b0963e23b76f70c625ceaa05815b665c81ea78c6958872676632187d487e160e1781e90b914d93a1ef00
data/.rubocop.yml CHANGED
@@ -16,6 +16,7 @@ Metrics/BlockLength:
16
16
  Exclude:
17
17
  - "**/spec/**/*"
18
18
  - "*.gemspec"
19
+ - "lib/rails_app_generator/app_generator.rb"
19
20
  IgnoredMethods:
20
21
  - configure
21
22
  - context
@@ -0,0 +1,3 @@
1
+ {
2
+ "docwriter.hotkey.mac": "⌥ + ."
3
+ }
data/CHANGELOG.md CHANGED
@@ -1,3 +1,26 @@
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
+
8
+ ## [0.0.6](https://github.com/klueless-io/rails_app_generator/compare/v0.0.5...v0.0.6) (2022-07-21)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * add a bunch of addons ([b781af6](https://github.com/klueless-io/rails_app_generator/commit/b781af66d7fe7d7dcd2550577166213deefc06c6))
14
+ * add a bunch of addons ([d9a85b7](https://github.com/klueless-io/rails_app_generator/commit/d9a85b7b32c2c25577d98b4b3be9aab7947ff6e9))
15
+ * update template paths in app_generator ([9b28a5e](https://github.com/klueless-io/rails_app_generator/commit/9b28a5ee58535a761581e619eb01dc3059a79948))
16
+
17
+ ## [0.0.5](https://github.com/klueless-io/rails_app_generator/compare/v0.0.4...v0.0.5) (2022-07-19)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * add console output capture ([0d66a3b](https://github.com/klueless-io/rails_app_generator/commit/0d66a3ba19c2adbd0f2c0747b8212e7e628c22ba))
23
+
1
24
  ## [0.0.4](https://github.com/klueless-io/rails_app_generator/compare/v0.0.3...v0.0.4) (2022-07-19)
2
25
 
3
26
 
data/README.md CHANGED
@@ -22,6 +22,15 @@ Or install it yourself as:
22
22
  gem install rails_app_generator
23
23
  ```
24
24
 
25
+ ## Notes
26
+
27
+ You can use rails_app_generator to create Rails 7 applications
28
+ You can use rails_app_generator with ruby 2.7 or 3.1
29
+
30
+ Rails new uses a batteries included approach, this means that you get everything and if you don't want a feature you need to turn it off explicitly using --skip-feature
31
+ I hope to change the focus in this project so that you get very minimal installation and then you turn on what you want explicitly.
32
+ Templates for rails are separated from templates for addons
33
+
25
34
  ## Stories
26
35
 
27
36
  ### Main Story
@@ -0,0 +1,3 @@
1
+ # After Templates
2
+
3
+ A set of templates that can be used via the `--template` argument
@@ -0,0 +1 @@
1
+ # frozen_string_literal: true
@@ -0,0 +1 @@
1
+ # frozen_string_literal: true
@@ -0,0 +1,5 @@
1
+ <div class="container">
2
+ <div class="row">
3
+ <%= yield %>
4
+ </div>
5
+ </div>
@@ -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,5 @@
1
+ .card1 {
2
+ $color-left: #ffafbd;
3
+ $color-right: #ffc3a0;
4
+ background-image: linear-gradient(to right, $color-left, $color-right);
5
+ }
@@ -0,0 +1,3 @@
1
+ .card2 {
2
+ background-image: linear-gradient(to bottom, #ff8f1f, #f32b60);
3
+ }
@@ -0,0 +1,5 @@
1
+ .card3 {
2
+ $color-left: #ffdde1;
3
+ $color-right: #ee9ca7;
4
+ background-image: linear-gradient(to right, $color-left, $color-right);
5
+ }
@@ -0,0 +1,3 @@
1
+ //= link custom-using-css.css
2
+ //= link custom-using-scss.css
3
+ //= link custom-component.css
@@ -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