rails_app_generator 0.2.42 → 0.2.43

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 (27) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/after_templates/addons/scenic/_.rb +64 -0
  4. data/after_templates/addons/scenic/app/controllers/home_controller.rb +24 -0
  5. data/after_templates/addons/scenic/app/services/seed_service.rb +104 -0
  6. data/after_templates/addons/scenic/app/views/home/index.html.erb +3 -0
  7. data/after_templates/addons/scenic/app/views/home/individual_visitors_by_monument.html.erb +24 -0
  8. data/after_templates/addons/scenic/app/views/home/reseed.html.erb +3 -0
  9. data/after_templates/addons/scenic/app/views/home/visitors_by_monument.html.erb +22 -0
  10. data/after_templates/addons/scenic/app/views/layouts/_footer.html.erb +0 -0
  11. data/after_templates/addons/scenic/app/views/layouts/_navbar.html.erb +10 -0
  12. data/after_templates/addons/scenic/app/views/layouts/application.html.erb +29 -0
  13. data/after_templates/addons/scenic/db/seeds.rb +1 -0
  14. data/after_templates/addons/scenic/db/views/individual_visitors_by_monuments_v01.sql +9 -0
  15. data/after_templates/addons/scenic/db/views/visitors_by_monuments_v01.sql +8 -0
  16. data/docs/last_run/app_generator_data.json +13 -13
  17. data/docs/last_run/rails_options_data.json +14 -13
  18. data/lib/rails_app_generator/version.rb +1 -1
  19. data/package-lock.json +2 -2
  20. data/package.json +1 -1
  21. data/profiles/addons/scenic.json +14 -0
  22. data/tasks/profile.thor +1 -0
  23. data/templates/thor_task/profile/after_template.rb +19 -30
  24. data/templates/thor_task/profile/app/controllers/home_controller.rb +4 -0
  25. data/templates/thor_task/profile/app/services/seed_service.rb +27 -0
  26. data/templates/thor_task/profile/db/seeds.rb +1 -0
  27. metadata +17 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fac35f7d43a4a0aa30d5ad4804f03210e65531405e2bb4aa816adceb57a6fce0
4
- data.tar.gz: c5bd9713bca39f89e04cb76811a8e4a6d5d6479af06cd9a10b813040f5761404
3
+ metadata.gz: 9d9ac313ea8fc5383a7d3d37ed9495fff8509f9b7dd1ff373ed97c80ce69ae23
4
+ data.tar.gz: bb65bdcc19d95bfb69abf92458dbe0eec353a8b3085ba8e679d72955ab55f425
5
5
  SHA512:
6
- metadata.gz: c05f482952728e4d790dc1e8f0ce58acaeae23d104df1a4b2dd05d42378e5aed84995397d2092e2144d2acb5528b091179b79045beab7e68f7245cbf9b0c4aee
7
- data.tar.gz: b229e0da5f6b7d8b1062c09fab5cab949cea7b5de883279311b3199a4c16bd3d1aa84010b41d6b27db0dd672f6707c0d095f839547c49d2eb4f4432282c56425
6
+ metadata.gz: 6f0ccd26ef5090325cbb6a76408fd201bbce81d8bbd739618e14393eebe0cc6814bb9e24eecdfec7dd7fd07664fe9e52ed1e47d92343461b45ab3378d37e22f7
7
+ data.tar.gz: 70dee6a466c8976ba4f385d532b34325d188a83599df9d4fcd4330b6805f9f0dcc580141fc4ad5e9d1b9a393c4b2084698f7a2771254b7839a18a4f98471765c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [0.2.42](https://github.com/klueless-io/rails_app_generator/compare/v0.2.41...v0.2.42) (2022-08-30)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add scenic addon ([93a9561](https://github.com/klueless-io/rails_app_generator/commit/93a9561131658399b91075e15c6d9680f1b73ece))
7
+ * cops ([fe3e6b7](https://github.com/klueless-io/rails_app_generator/commit/fe3e6b7031a57b0f212fd91491ebc7f32928b9c1))
8
+
1
9
  ## [0.2.41](https://github.com/klueless-io/rails_app_generator/compare/v0.2.40...v0.2.41) (2022-08-30)
2
10
 
3
11
 
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Ads methods to ActiveRecord:Migration to create and manage database views in Rails
4
+ #
5
+ # exe/rag addons/scenic
6
+
7
+ self.local_template_path = File.dirname(__FILE__)
8
+
9
+ gac 'base rails 7 image created'
10
+
11
+ prepare_environment
12
+
13
+ after_bundle do
14
+ force_copy
15
+
16
+ create_db
17
+ scaffolds
18
+ setup_customizations
19
+ migrate_db
20
+ end
21
+
22
+ def scaffolds
23
+ add_scaffold('country', 'code', 'name')
24
+ add_scaffold('monument', 'name', 'description', 'country:references')
25
+ add_scaffold('visitor', 'name', 'monument:references')
26
+
27
+ generate('scenic:model visitors_by_monument')
28
+ generate('scenic:model individual_visitors_by_monument --materialized')
29
+
30
+ directory "db/views"
31
+ end
32
+
33
+ def setup_customizations
34
+ route("root 'home#index'")
35
+
36
+ add_controller('home', 'index', 'visitors_by_monument', 'individual_visitors_by_monument', 'reseed', 'refresh_material_view')
37
+
38
+ directory "app/controllers"
39
+ directory "app/models"
40
+ directory "app/views"
41
+ template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
42
+ directory "app/services"
43
+ end
44
+
45
+ def create_db
46
+ gsub_file('config/database.yml', ' encoding: unicode', db_development_settings)
47
+ rails_command('db:environment:set RAILS_ENV=development')
48
+ db(drop: true, create: true)
49
+ end
50
+
51
+ def migrate_db
52
+ template 'db/seeds.rb' , 'db/seeds.rb'
53
+
54
+ db(migrate: true, seed: true)
55
+ end
56
+
57
+ def db_development_settings
58
+ <<-'RUBY'
59
+ encoding: unicode
60
+ host: <%= ENV['DATABASE_HOST'] %>
61
+ username: <%= ENV['DATABASE_USERNAME'] %>
62
+ password: <%= ENV['DATABASE_PASSWORD'] %>
63
+ RUBY
64
+ end
@@ -0,0 +1,24 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ def visitors_by_monument
6
+ @visitors = VisitorsByMonument.all.order(:visits)
7
+ end
8
+
9
+ def individual_visitors_by_monument
10
+ @visitors = IndividualVisitorsByMonument.all.order(:visits)
11
+ end
12
+
13
+ def reseed
14
+ SeedService.seed(variant: :refresh)
15
+
16
+ redirect_back_or_to root_path
17
+ end
18
+
19
+ def refresh_material_view
20
+ IndividualVisitorsByMonument.refresh
21
+
22
+ redirect_back_or_to root_path
23
+ end
24
+ end
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SeedService
4
+ class << self
5
+ def seed(variant: :reset)
6
+ service = SeedService.new
7
+ service.call(variant: variant)
8
+ end
9
+ end
10
+
11
+ NAMES = %w[
12
+ Adyson Aimee Aisha Akira Alani Albert Aleah Aleena Alena Alexus Alfred Ali Alia
13
+ Amelie Amina Amirah Amiya Anabella Anabelle Andrew Angeline Angelique Ann Annabel Aliana
14
+ Armani Arthur Aryana Ashanti Ashleigh Ashly Aspen Averie Avery Ayana Barbara
15
+ Brynlee Cailyn Cal Camilla Campbell Carina Carissa Carlee Carley Carlie Carolyn Cassie
16
+ Charlie Charlize Chaya Cherish Cierra Clair Clare Clarence Cloe Corinne Cristal
17
+ Destiney Dominique Dorsey Early Edith Edward Eileen Elaine Elisa Ellen Elmer Elsa Elsie
18
+ Fay Felicity Finley Frances Frank Fred Frederick Frida Gemma George Gia Giada Giana Gillian
19
+ Hana Harris Harry Haven Henderson Henry Herbert Hezekiah Hillary Iliana India
20
+ James Jamya Janae Janet Janiah Jaslyn Jaycee Jaylah Jaylee Jaylen Jaylene Jaylyn
21
+ John Johnie Joseph Joslyn Joyce Judith Julianne June Kaia Kaila Kailee Kaiya Kaley
22
+ Karma Kasey Katrina Kaya Kaylen Kayley Kaylyn Keely Kelsie Kendal Kenna Keyla Kierra
23
+ Leanna Lewis Leyla Libby Lilianna Lillianna Lilyana Lina Litzy Lizeth Lonzo Lorelai
24
+ Maeve Magdalena Maia Makena Maleah Maliyah Mara Mareli Mariam Marianna Mariela Marisa
25
+ Miah Micah Milagros Mina Mira Mollie Monique Monserrat Mont Moriah Mylie Natalya
26
+ Paloma Pamela Patience Paula Peter Phoenix Precious Raelynn Raina Raven Rayna Rayne Regan
27
+ Rollin Roselyn Rosemary Roy Ryann Saige Salma Sam Samuel Sanaa Sanai Sarahi Sariah Savanah
28
+ Shyann Shyanne Shyla Siena Sonia Stacy Stephany Susan Taliyah Tamara Taniya Taniyah
29
+ Tianna Tom Valery Walter Will William Willie Wilmer Xiomara Yadira Yamilet Yaritza Yasmine Yazmin
30
+ Yoselin Yuliana Zaniyah Zara Zaria Zion
31
+ %
32
+ ].freeze
33
+
34
+ attr_reader :au, :us, :gb, :monuments
35
+
36
+ def call(variant: :reset)
37
+ reset if variant == :reset
38
+ refresh if variant == :refresh
39
+ create
40
+ end
41
+
42
+ private
43
+
44
+ def reset
45
+ Visitor.delete_all
46
+ Monument.delete_all
47
+ Country.delete_all
48
+ end
49
+
50
+ def refresh
51
+ Visitor.delete_all
52
+ end
53
+
54
+ def create
55
+ upsert_countries
56
+ upsert_monuments
57
+ create_visitors
58
+ end
59
+
60
+ def upsert_countries
61
+ @au = Country.create_with(name: 'Australia').find_or_create_by(code: 'AU')
62
+ @us = Country.create_with(name: 'United States').find_or_create_by(code: 'US')
63
+ @gb = Country.create_with(name: 'United Kingdom').find_or_create_by(code: 'GB')
64
+ end
65
+
66
+ def upsert_monuments
67
+ @monuments = [
68
+ Monument.create_with(country: au,
69
+ description: 'The Sydney Opera House is a multi-venue performing arts centre in Sydney, New South Wales, Australia. It is the largest performing arts centre in Australia and the second largest in the world.')
70
+ .find_or_create_by(name: 'Sydney Opera House'),
71
+ Monument.create_with(country: au,
72
+ description: 'The Sydney Harbour Bridge is a viaduct bridge in Sydney, New South Wales, Australia. It is the longest viaduct bridge in Australia and the second longest in the world.')
73
+ .find_or_create_by(name: 'Sydney Harbour Bridge'),
74
+ Monument.create_with(country: au,
75
+ description: 'The Big Banana is a large, round, fruit-bearing tree in the Australian bushland of the Great Barrier Reef. It is the largest tree in the world.')
76
+ .find_or_create_by(name: 'The Big Banana'),
77
+ Monument.create_with(country: us,
78
+ description: 'The Statue of Liberty is a colossal neoclassical sculpture on Liberty Island in New York Harbor, New York, in the United States. The statue was a gift from the people of France to the people of the United States in 1886.')
79
+ .find_or_create_by(name: 'Statue of Liberty'),
80
+ Monument.create_with(country: us,
81
+ description: 'The Golden Gate Bridge is a suspension bridge spanning the Golden Gate, the one-mile-wide strait connecting San Francisco Bay and the Pacific Ocean. The bridge was completed in 1937.')
82
+ .find_or_create_by(name: 'Golden Gate Bridge'),
83
+ Monument.create_with(country: us,
84
+ description: 'The Empire State Building is a 102-story skyscraper in Midtown Manhattan, New York City. It is the world\'s tallest building, a structure that is the 4th-tallest building in the world.')
85
+ .find_or_create_by(name: 'Empire State Building'),
86
+ Monument.create_with(country: gb,
87
+ description: 'The Tower of London is a historic London tower on the north bank of the River Thames in central London. It is the most-visited paid monument in the world.')
88
+ .find_or_create_by(name: 'Tower of London'),
89
+ Monument.create_with(country: gb, description: 'The Big Ben is a clock tower in the north of London. It is the world\'s tallest clock tower.')
90
+ .find_or_create_by(name: 'Big Ben'),
91
+ Monument.create_with(country: gb,
92
+ description: 'The London Eye is a giant Ferris wheel situated on the South Bank of the River Thames in London, England. It is the world\'s largest Ferris wheel.')
93
+ .find_or_create_by(name: 'London Eye')
94
+ ]
95
+ end
96
+
97
+ def create_visitors
98
+ NAMES.each do |name|
99
+ rand(1..10).times do # number monuments to visited (duplicates are fine)
100
+ Visitor.create(name: name, monument: monuments.sample)
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,3 @@
1
+ <h1>Scenic</h1>
2
+
3
+ <p>Ads methods to ActiveRecord:Migration to create and manage database views in Rails</p>
@@ -0,0 +1,24 @@
1
+ <h1>Individual Visitors by Monument</h1>
2
+
3
+ <pre><code><%= File.read('db/views/individual_visitors_by_monuments_v01.sql') %></code></pre>
4
+
5
+ <table>
6
+ <thead>
7
+ <tr>
8
+ <th>Person</th>
9
+ <th>Monument</th>
10
+ <th>Country</th>
11
+ <th>Visits</th>
12
+ </tr>
13
+ </thead>
14
+ <tbody>
15
+ <% @visitors.each do |visitor| %>
16
+ <tr>
17
+ <td><%= visitor.person %></td>
18
+ <td><%= visitor.monument %></td>
19
+ <td><%= visitor.country %></td>
20
+ <td><%= visitor.visits %></td>
21
+ </tr>
22
+ <% end %>
23
+ </tbody>
24
+ </table>
@@ -0,0 +1,3 @@
1
+ <h1>Re-Seed</h1>
2
+
3
+ <p>Database has been re-seeded</p>
@@ -0,0 +1,22 @@
1
+ <h1>Visitors by Monument</h1>
2
+
3
+ <pre><code><%= File.read('db/views/visitors_by_monuments_v01.sql') %></code></pre>
4
+
5
+ <table>
6
+ <thead>
7
+ <tr>
8
+ <th>Monument</th>
9
+ <th>Country</th>
10
+ <th>Visits</th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <% @visitors.each do |visitor| %>
15
+ <tr>
16
+ <td><%= visitor.monument %></td>
17
+ <td><%= visitor.country %></td>
18
+ <td><%= visitor.visits %></td>
19
+ </tr>
20
+ <% end %>
21
+ </tbody>
22
+ </table>
@@ -0,0 +1,10 @@
1
+ <%= link_to 'Home', root_path %>
2
+ | <%= link_to 'Countries', countries_path %>
3
+ | <%= link_to 'Monuments', monuments_path %>
4
+ | <%= link_to 'Visitors', visitors_path %>
5
+ <br>
6
+ <%= link_to 'Visits (View)', home_visitors_by_monument_path %>
7
+ | <%= link_to 'Visits (Materialized)', home_individual_visitors_by_monument_path %>
8
+ | <%= link_to 'Re-Seed', home_reseed_path, style: 'color: blue; font-weight: 600;' %>
9
+ | <%= link_to 'Refresh Material View', home_refresh_material_view_path, style: 'color: blue; font-weight: 600;' %>
10
+ <hr />
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= camelized %></title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <%%= csrf_meta_tags %>
7
+ <%%= csp_meta_tag %>
8
+
9
+ <%- if options[:skip_hotwire] || options[:skip_javascript] -%>
10
+ <%%= stylesheet_link_tag "application" %>
11
+ <%- else -%>
12
+ <%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
13
+ <%- end -%>
14
+ </head>
15
+
16
+ <body>
17
+ <header>
18
+ <%%= render 'layouts/navbar' %>
19
+ <hr />
20
+ </header>
21
+ <main>
22
+ <%%= yield %>
23
+ </main>
24
+ <footer>
25
+ <%%= render 'layouts/footer' %>
26
+ </footer>
27
+ </body>
28
+ </html>
29
+
@@ -0,0 +1 @@
1
+ SeedService.seed
@@ -0,0 +1,9 @@
1
+ select
2
+ visitors.name as person,
3
+ monuments.name as monument,
4
+ countries.name as country,
5
+ count(*) as visits
6
+ from visitors
7
+ join monuments on visitors.monument_id = monuments.id
8
+ join countries on monuments.country_id = countries.id
9
+ group by person, monument, country
@@ -0,0 +1,8 @@
1
+ select
2
+ monuments.name as monument,
3
+ countries.name as country,
4
+ count(*) as visits
5
+ from visitors
6
+ join monuments on visitors.monument_id = monuments.id
7
+ join countries on monuments.country_id = countries.id
8
+ group by monument, country
@@ -4,7 +4,7 @@
4
4
  "skip_collision_check": false,
5
5
  "ruby": "/Users/davidcruwys/.asdf/installs/ruby/3.1.1/bin/ruby",
6
6
  "database": "postgresql",
7
- "skip_git": false,
7
+ "skip_git": true,
8
8
  "skip_keeps": false,
9
9
  "skip_action_mailer": false,
10
10
  "skip_action_mailbox": false,
@@ -32,18 +32,18 @@
32
32
  "test": "rspec",
33
33
  "add_acts_as_list": false,
34
34
  "add_administrate": false,
35
- "add_annotate": true,
36
- "add_avo": true,
35
+ "add_annotate": false,
36
+ "add_avo": false,
37
37
  "add_bcrypt": false,
38
- "add_brakeman": true,
38
+ "add_brakeman": false,
39
39
  "add_browser": false,
40
- "add_bundler_audit": true,
40
+ "add_bundler_audit": false,
41
41
  "add_chartkick": false,
42
- "add_devise": true,
42
+ "add_devise": false,
43
43
  "add_devise_masquerade": false,
44
- "add_dotenv": true,
45
- "add_factory_bot_rails": true,
46
- "add_faker": true,
44
+ "add_dotenv": false,
45
+ "add_factory_bot_rails": false,
46
+ "add_faker": false,
47
47
  "add_friendly_id": false,
48
48
  "add_groupdate": false,
49
49
  "add_hexapdf": false,
@@ -52,7 +52,7 @@
52
52
  "add_image_processing": false,
53
53
  "add_kaminari": false,
54
54
  "add_lograge": false,
55
- "add_minimal_css": false,
55
+ "add_minimal_css": true,
56
56
  "minimal_css_library": "water.css",
57
57
  "add_mini_magick": false,
58
58
  "add_motor_admin": false,
@@ -60,12 +60,12 @@
60
60
  "add_pretender": false,
61
61
  "add_public_suffix": false,
62
62
  "add_rails_html_sanitizer": false,
63
+ "add_scenic": true,
63
64
  "add_ransack": false,
64
65
  "add_redcarpet": false,
65
66
  "add_rolify": false,
66
- "add_rubocop": true,
67
+ "add_rubocop": false,
67
68
  "add_twilio_ruby": false,
68
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/application/klueless/_.rb",
69
- "css": "tailwind"
69
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/scenic/_.rb"
70
70
  }
71
71
  }
@@ -7,9 +7,9 @@
7
7
  "quiet": false,
8
8
  "skip": false,
9
9
  "ruby": "/Users/davidcruwys/.asdf/installs/ruby/3.1.1/bin/ruby",
10
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/application/klueless/_.rb",
10
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/scenic/_.rb",
11
11
  "database": "postgresql",
12
- "skip_git": false,
12
+ "skip_git": true,
13
13
  "skip_keeps": false,
14
14
  "skip_action_mailer": false,
15
15
  "skip_action_mailbox": false,
@@ -36,24 +36,24 @@
36
36
  "api": false,
37
37
  "minimal": false,
38
38
  "javascript": "importmap",
39
- "css": "tailwind",
39
+ "css": "",
40
40
  "skip_bundle": false,
41
41
  "note": "",
42
42
  "test": "rspec",
43
43
  "add_acts_as_list": false,
44
44
  "add_administrate": false,
45
- "add_annotate": true,
46
- "add_avo": true,
45
+ "add_annotate": false,
46
+ "add_avo": false,
47
47
  "add_bcrypt": false,
48
- "add_brakeman": true,
48
+ "add_brakeman": false,
49
49
  "add_browser": false,
50
- "add_bundler_audit": true,
50
+ "add_bundler_audit": false,
51
51
  "add_chartkick": false,
52
- "add_devise": true,
52
+ "add_devise": false,
53
53
  "add_devise_masquerade": false,
54
- "add_dotenv": true,
55
- "add_factory_bot_rails": true,
56
- "add_faker": true,
54
+ "add_dotenv": false,
55
+ "add_factory_bot_rails": false,
56
+ "add_faker": false,
57
57
  "add_friendly_id": false,
58
58
  "add_groupdate": false,
59
59
  "add_hexapdf": false,
@@ -62,7 +62,7 @@
62
62
  "add_image_processing": false,
63
63
  "add_kaminari": false,
64
64
  "add_lograge": false,
65
- "add_minimal_css": false,
65
+ "add_minimal_css": true,
66
66
  "minimal_css_library": "water.css",
67
67
  "add_mini_magick": false,
68
68
  "add_motor_admin": false,
@@ -70,10 +70,11 @@
70
70
  "add_pretender": false,
71
71
  "add_public_suffix": false,
72
72
  "add_rails_html_sanitizer": false,
73
+ "add_scenic": true,
73
74
  "add_ransack": false,
74
75
  "add_redcarpet": false,
75
76
  "add_rolify": false,
76
- "add_rubocop": true,
77
+ "add_rubocop": false,
77
78
  "add_twilio_ruby": false
78
79
  }
79
80
  }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.2.42'
4
+ VERSION = '0.2.43'
5
5
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.2.42",
3
+ "version": "0.2.43",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.2.42",
9
+ "version": "0.2.43",
10
10
  "dependencies": {
11
11
  "daisyui": "^2.20.0"
12
12
  },
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.2.42",
3
+ "version": "0.2.43",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -0,0 +1,14 @@
1
+ {
2
+ "args": {
3
+ "app_path": "r7_scenic",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
5
+ },
6
+ "opts": {
7
+ "skip_git": true,
8
+ "skip_test": true,
9
+ "database": "postgresql",
10
+ "add_minimal_css": true,
11
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/scenic/_.rb",
12
+ "add_scenic": true
13
+ }
14
+ }
data/tasks/profile.thor CHANGED
@@ -42,6 +42,7 @@ class Profile < Thor
42
42
  template('profile/after_template.rb' , after_template_path('_.rb') , force: options[:force])
43
43
  template('profile/app/controllers/home_controller.rb' , after_template_path('app/controllers/home_controller.rb') , force: options[:force])
44
44
  template('profile/app/views/home/index.html.erb' , after_template_path('app/views/home/index.html.erb') , force: options[:force])
45
+ template('profile/app/services/seed_service.rb' , after_template_path('app/services/seed_service.rb') , force: options[:force])
45
46
 
46
47
  copy_file('profile/app/views/layouts/_navbar.html.erb' , after_template_path('app/views/layouts/_navbar.html.erb') , force: options[:force])
47
48
  copy_file('profile/app/views/layouts/_footer.html.erb' , after_template_path('app/views/layouts/_footer.html.erb') , force: options[:force])
@@ -11,9 +11,10 @@ gac 'base rails 7 image created'
11
11
  prepare_environment
12
12
 
13
13
  after_bundle do
14
+ create_db
14
15
  scaffolds
15
16
  setup_customizations
16
- setup_db
17
+ migrate_db
17
18
  end
18
19
 
19
20
  def scaffolds
@@ -33,38 +34,26 @@ def setup_customizations
33
34
  directory "app/models"
34
35
  directory "app/views"
35
36
  template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
37
+ directory "app/services"
36
38
  end
37
39
 
38
- def setup_db
40
+ def create_db
41
+ # uncomment this if you need custom configuration in database.yml
42
+ # gsub_file('config/database.yml', ' encoding: unicode', db_development_settings)
43
+ db(drop: true, create: true)
44
+ end
45
+
46
+ def migrate_db
39
47
  template 'db/seeds.rb' , 'db/seeds.rb'
40
48
 
41
- db_migrate
42
- db_seed
49
+ db(migrate: true, seed: true)
43
50
  end
44
51
 
45
- # Other template command examples
46
- # prepare_environment
47
- # bundle_install
48
- # css_install('tailwind')
49
- # rails_command('db:migrate')
50
- # rails_command('db:migrate')
51
- # bundle_add('hotwire-rails')
52
- # rails_command('hotwire:install')
53
- # run('bin/importmap pin sortablejs')
54
- # run('npm install daisyui')
55
- # rubocop
56
- #
57
- # directory 'app/assets/images'
58
- # create_file 'app/assets/stylesheets/custom-bootstrap-import.scss' , read_template('custom-bootstrap-import.scss')
59
- # append_to_file 'app/assets/config/manifest.js' , read_template('manifest.js')
60
- # insert_into_file 'app/views/layouts/application.html.erb', read_template('application.html.erb'),
61
- # before: %( <%%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>)
62
- # gsub_file 'app/views/layouts/application.html.erb', %(container mx-auto mt-28 px-5 flex), 'container mx-auto px-5'
63
- # template 'home.css', 'app/assets/stylesheets/home.css'
64
- #
65
- # add_controller('page', 'benefits', 'faq', 'terms', 'privacy', '--skip-routes')
66
- # route(<<-'RUBY')
67
- # PageController.action_methods.each do |action|
68
- # get "/#{action}", to: "page##{action}", as: "page_#{action}"
69
- # end
70
- # RUBY
52
+ def db_development_settings
53
+ <<-'RUBY'
54
+ encoding: unicode
55
+ host: <%= ENV['DATABASE_HOST'] %>
56
+ username: <%= ENV['DATABASE_USERNAME'] %>
57
+ password: <%= ENV['DATABASE_PASSWORD'] %>
58
+ RUBY
59
+ end
@@ -1,4 +1,8 @@
1
1
  class HomeController < ApplicationController
2
2
  def index
3
3
  end
4
+
5
+ # def reseed
6
+ # SeedService.seed
7
+ # end
4
8
  end
@@ -0,0 +1,27 @@
1
+ class SeedService
2
+ class << self
3
+ def seed
4
+ service = SeedService.new
5
+ service.call
6
+ end
7
+ end
8
+
9
+ def call
10
+ reset
11
+ create
12
+ end
13
+
14
+ private
15
+
16
+ def reset
17
+ # Person.delete_all
18
+ # Post.delete_all
19
+ # Project.delete_all
20
+ end
21
+
22
+ def create
23
+ # FactoryBot.create_list(:post, rand(10..20))
24
+ # FactoryBot.create_list(:person, rand(10..20))
25
+ # FactoryBot.create_list(:project, rand(10..20))
26
+ end
27
+ end
@@ -1,3 +1,4 @@
1
+ # SeedService.seed
1
2
  # david = User.create(email: 'david@site.com', name: 'david', password: 'password')
2
3
  # james = User.create(email: 'james@site.com', name: 'james', password: 'password')
3
4
  # sally = User.create(email: 'sally@site.com', name: 'sally', password: 'password')
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.2.42
4
+ version: 0.2.43
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-08-30 00:00:00.000000000 Z
11
+ date: 2022-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootsnap
@@ -440,6 +440,19 @@ files:
440
440
  - after_templates/addons/rubocop/app/controllers/home_controller.rb
441
441
  - after_templates/addons/rubocop/app/views/home/index.html.erb
442
442
  - after_templates/addons/rubocop/app/views/layouts/application.html.erb
443
+ - after_templates/addons/scenic/_.rb
444
+ - after_templates/addons/scenic/app/controllers/home_controller.rb
445
+ - after_templates/addons/scenic/app/services/seed_service.rb
446
+ - after_templates/addons/scenic/app/views/home/index.html.erb
447
+ - after_templates/addons/scenic/app/views/home/individual_visitors_by_monument.html.erb
448
+ - after_templates/addons/scenic/app/views/home/reseed.html.erb
449
+ - after_templates/addons/scenic/app/views/home/visitors_by_monument.html.erb
450
+ - after_templates/addons/scenic/app/views/layouts/_footer.html.erb
451
+ - after_templates/addons/scenic/app/views/layouts/_navbar.html.erb
452
+ - after_templates/addons/scenic/app/views/layouts/application.html.erb
453
+ - after_templates/addons/scenic/db/seeds.rb
454
+ - after_templates/addons/scenic/db/views/individual_visitors_by_monuments_v01.sql
455
+ - after_templates/addons/scenic/db/views/visitors_by_monuments_v01.sql
443
456
  - after_templates/addons/twilio_ruby/_.rb
444
457
  - after_templates/addons/twilio_ruby/app/controllers/home_controller.rb
445
458
  - after_templates/addons/twilio_ruby/app/views/home/index.html.erb
@@ -800,6 +813,7 @@ files:
800
813
  - profiles/addons/redcarpet.json
801
814
  - profiles/addons/rolify.json
802
815
  - profiles/addons/rubocop.json
816
+ - profiles/addons/scenic.json
803
817
  - profiles/addons/twilio_ruby.json
804
818
  - profiles/application/klueless.json
805
819
  - profiles/application/printspeak.json
@@ -861,6 +875,7 @@ files:
861
875
  - templates/thor_task/addon/addon.tt
862
876
  - templates/thor_task/profile/after_template.rb
863
877
  - templates/thor_task/profile/app/controllers/home_controller.rb
878
+ - templates/thor_task/profile/app/services/seed_service.rb
864
879
  - templates/thor_task/profile/app/views/home/index.html.erb.tt
865
880
  - templates/thor_task/profile/app/views/layouts/_footer.html.erb.tt
866
881
  - templates/thor_task/profile/app/views/layouts/_navbar.html.erb