rails_app_generator 0.2.38 → 0.2.39

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/after_templates/addons/avo/_.rb +11 -3
  4. data/after_templates/addons/avo/app/avo/resources/post_resource.rb +3 -0
  5. data/after_templates/addons/avo/app/avo/resources/user_resource.rb +1 -0
  6. data/after_templates/addons/avo/app/controllers/home_controller.rb +4 -0
  7. data/after_templates/addons/avo/app/models/post.rb +3 -2
  8. data/after_templates/addons/avo/app/models/user.rb +6 -0
  9. data/after_templates/addons/avo/app/services/seed_service.rb +9 -0
  10. data/after_templates/addons/avo/app/views/home/index.html.erb +4 -2
  11. data/after_templates/addons/avo/app/views/layouts/_navbar.html.erb +7 -1
  12. data/after_templates/addons/avo/db/seeds.rb +1 -1
  13. data/after_templates/addons/friendly_id/app/views/posts/_form.html.erb +32 -0
  14. data/after_templates/addons/friendly_id/app/views/posts/_post.html.erb +17 -0
  15. data/after_templates/addons/friendly_id/app/views/posts/_post.json.jbuilder +2 -0
  16. data/after_templates/addons/friendly_id/app/views/posts/edit.html.erb +10 -0
  17. data/after_templates/addons/friendly_id/app/views/posts/index.html.erb +14 -0
  18. data/after_templates/addons/friendly_id/app/views/posts/index.json.jbuilder +1 -0
  19. data/after_templates/addons/friendly_id/app/views/posts/new.html.erb +9 -0
  20. data/after_templates/addons/friendly_id/app/views/posts/show.json.jbuilder +1 -0
  21. data/docs/last_run/app_generator_data.json +8 -8
  22. data/docs/last_run/rails_options_data.json +8 -8
  23. data/lib/rails_app_generator/addons/factory_bot_rails.rb +15 -0
  24. data/lib/rails_app_generator/app_generator.rb +9 -0
  25. data/lib/rails_app_generator/rag_initializer.rb +1 -0
  26. data/lib/rails_app_generator/version.rb +1 -1
  27. data/package-lock.json +2 -2
  28. data/package.json +1 -1
  29. data/profiles/addons/avo.json +1 -1
  30. metadata +13 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acc731854bb8ac95ec84859705ef81a8b9858802d9675a54dc02a6af5a9ee676
4
- data.tar.gz: 3be6aedc699c1f8078aaa54e465658b17ed4e9b66f56e63832e187c0119e9afa
3
+ metadata.gz: be981683729c562f221e7f00120145d345ea0111fbe80aa5f4cf9f2d03eaff03
4
+ data.tar.gz: 4a1a65620ae0fcecd12f0c27cd88fe0cb51da1c57843fc7afced0508cf31dfb1
5
5
  SHA512:
6
- metadata.gz: 520c0072f1fa27c043d4af71667cc486e67cae7606d19daa558482c6e7892322f1b7ab89d2ce685098d635b4d307d3f34ab035ce132b0eb131e625f2071f1f39
7
- data.tar.gz: 57781bbb63ea180fb25aac7727d5ae0c88e8f2948d46e2d14635accb78a750c589462075cdfb2368f95eac8eb1da416150644370497e4c4c56b25b39a5bd5ee8
6
+ metadata.gz: d1fe4dfc123fb768fde98d6e40ed82e51955f3612751afa0241a05868d31d7fe7e209036bac26f42573cd7b7ef2f099415ab4e6e8177cd00322c59746f11e486
7
+ data.tar.gz: f79cefc7816b714aac7717d35b7a6d64ccc3302d5b90c31e7747e4e0897bd0c1a2820f87017ca86de4221ca9c593735e34eb8d52bd55a85906e08fcef5652fb9
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [0.2.38](https://github.com/klueless-io/rails_app_generator/compare/v0.2.37...v0.2.38) (2022-08-22)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add friendly_id addon ([5c34df5](https://github.com/klueless-io/rails_app_generator/commit/5c34df5fdbca8bc6810bd3cc9343d8b799d63ac3))
7
+
1
8
  ## [0.2.37](https://github.com/klueless-io/rails_app_generator/compare/v0.2.36...v0.2.37) (2022-08-22)
2
9
 
3
10
 
@@ -18,13 +18,19 @@ after_bundle do
18
18
  setup_customizations
19
19
  setup_db
20
20
  setup_avo
21
+
22
+ swap1 = ' resources :users'
23
+ swap2 = " devise_for :users, controllers: { sessions: 'users/sessions', registrations: 'users/registrations' }"
24
+
25
+ swap_lines('config/routes.rb', swap1, swap2)
21
26
  end
22
27
 
23
28
  def scaffolds
24
29
  add_scaffold_controller('users', 'name', 'email')
25
- # add_scaffold('author', 'name', 'email', 'bio:text')
26
30
  add_scaffold('category', 'title', 'description:text')
27
- add_scaffold('post', 'title content:text', 'published:boolean', 'user:references', 'category:references')
31
+ add_scaffold('post', 'title', 'content:text', 'published:boolean', 'user:references', 'category:references')
32
+ add_scaffold('comment', 'body:text', 'commentable:references{polymorphic}', 'user:references')
33
+
28
34
  add_scaffold('location', 'name', 'description:text') #, 'photo:file')
29
35
  add_scaffold('room', 'name', 'description:text', 'location:references') #, 'photo:file'
30
36
  add_scaffold('booking', 'user:references', 'room:references', 'booked_at:datetime', 'booked_for:integer')
@@ -35,11 +41,12 @@ def setup_customizations
35
41
 
36
42
  force_copy
37
43
 
38
- add_controller('home', 'index', 'quick_signin')
44
+ add_controller('home', 'index', 'quick_signin', 'reseed')
39
45
 
40
46
  directory "app/controllers"
41
47
  directory "app/models"
42
48
  directory "app/views"
49
+ directory "app/services"
43
50
  template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
44
51
  end
45
52
 
@@ -55,6 +62,7 @@ def setup_avo
55
62
 
56
63
  generate('avo:resource Category')
57
64
  generate('avo:resource Post')
65
+ generate('avo:resource Comment')
58
66
  generate('avo:resource Location')
59
67
  generate('avo:resource Room')
60
68
  generate('avo:resource Booking')
@@ -22,4 +22,7 @@ class PostResource < Avo::BaseResource
22
22
 
23
23
  # tutorial (related category): https://youtu.be/WgNK-oINFww?t=328
24
24
  field :category, as: :belongs_to
25
+
26
+ # tutorial (related category with custom name): https://youtu.be/WgNK-oINFww?t=722
27
+ field :user, name: "Author", as: :belongs_to
25
28
  end
@@ -20,4 +20,5 @@ class UserResource < Avo::BaseResource
20
20
  field :name, as: :text
21
21
  field :email, as: :text, as_description: true
22
22
  field :password, as: :text
23
+ field :posts, as: :has_many
23
24
  end
@@ -5,4 +5,8 @@ class HomeController < ApplicationController
5
5
  def quick_signin
6
6
  sign_in(:user, User.first)
7
7
  end
8
+
9
+ def reseed
10
+ SeedService.seed
11
+ end
8
12
  end
@@ -1,9 +1,10 @@
1
1
  class Post < ApplicationRecord
2
- belongs_to :author, class_name: 'User', foreign_key: :user_id
2
+ # belongs_to :author, class_name: 'User', foreign_key: :user_id
3
+ belongs_to :user
3
4
  belongs_to :category
4
5
 
5
6
  # tutorial: https://youtu.be/WgNK-oINFww?t=209
6
7
  def excerpt
7
- ActionView::Base.full_sanitizer.sanitize(content).truncate(100)
8
+ ActionView::Base.full_sanitizer.sanitize(content).truncate(50)
8
9
  end
9
10
  end
@@ -0,0 +1,6 @@
1
+ class User < ApplicationRecord
2
+ devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable
3
+
4
+ has_many :posts
5
+ has_many :comments
6
+ end
@@ -0,0 +1,9 @@
1
+ require 'open-uri'
2
+
3
+ class SeedService
4
+ class << self
5
+ def seed
6
+ puts 'sssssssssssssssssssssss'
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,5 @@
1
- <h1>I18n.t('application_name')</h1>
1
+ <h1><%= I18n.t('application_name') %></h1>
2
2
 
3
- <p>Avo abstracts away the common parts of building apps, letting your engineers work on your app's essential components. The result is a full-featured admin panel that works out of the box, ready to give to your end-users.</p>
3
+ <p>Avo abstracts away the common parts of building apps, letting your engineers work on your app's essential components.</p>
4
+
5
+ <p>The result is a full-featured admin panel that works out of the box, ready to give to your end-users.</p>
@@ -1,13 +1,19 @@
1
1
  <%= link_to 'Home', root_path %> |
2
+ <%= link_to 'Re-Seed', home_reseed_path %> |
2
3
  <%= link_to 'Quick Sign In', home_quick_signin_path %> |
3
4
  <%= link_to 'AVO', avo_path %>
5
+ <% if current_user %>
6
+ <br>
4
7
  (
5
- <%= link_to 'Posts', posts_path, class: 'simple_scaffold' %> |
6
8
  <%= link_to 'Categories', categories_path, class: 'simple_scaffold' %> |
9
+ <%= link_to 'Posts', posts_path, class: 'simple_scaffold' %> |
10
+ <%= link_to 'Comments', comments_path, class: 'simple_scaffold' %> |
7
11
  <%= link_to 'Authors', users_path, class: 'simple_scaffold' %>
8
12
  )
9
13
  (
10
14
  <%= link_to 'Locations', locations_path, class: 'simple_scaffold' %> |
11
15
  <%= link_to 'Rooms', rooms_path, class: 'simple_scaffold' %> |
16
+ <%= link_to 'Comments', comments_path, class: 'simple_scaffold' %> |
12
17
  <%= link_to 'Bookings', bookings_path, class: 'simple_scaffold' %>
13
18
  )
19
+ <% end %>
@@ -176,7 +176,7 @@ end
176
176
  content: Faker::Lorem.sentences(number: 5).join('<br />'),
177
177
  published: Faker::Boolean.boolean(true_ratio: 0.6),
178
178
  category: Category.all.sample,
179
- author: User.all.sample)
179
+ user: User.all.sample)
180
180
  end
181
181
 
182
182
  # 200.times do
@@ -0,0 +1,32 @@
1
+ <%= form_with(model: post) do |form| %>
2
+ <% if post.errors.any? %>
3
+ <div style="color: red">
4
+ <h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2>
5
+
6
+ <ul>
7
+ <% post.errors.each do |error| %>
8
+ <li><%= error.full_message %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div>
15
+ <%= form.label :title, style: "display: block" %>
16
+ <%= form.text_field :title %>
17
+ </div>
18
+
19
+ <div>
20
+ <%= form.label :body, style: "display: block" %>
21
+ <%= form.text_area :body %>
22
+ </div>
23
+
24
+ <div>
25
+ <%= form.label :slug, style: "display: block" %>
26
+ <%= form.text_field :slug %>
27
+ </div>
28
+
29
+ <div>
30
+ <%= form.submit %>
31
+ </div>
32
+ <% end %>
@@ -0,0 +1,17 @@
1
+ <div id="<%= dom_id post %>">
2
+ <p>
3
+ <strong>Title:</strong>
4
+ <%= post.title %>
5
+ </p>
6
+
7
+ <p>
8
+ <strong>Body:</strong>
9
+ <%= post.body %>
10
+ </p>
11
+
12
+ <p>
13
+ <strong>Slug:</strong>
14
+ <%= post.slug %>
15
+ </p>
16
+
17
+ </div>
@@ -0,0 +1,2 @@
1
+ json.extract! post, :id, :title, :body, :slug, :created_at, :updated_at
2
+ json.url post_url(post, format: :json)
@@ -0,0 +1,10 @@
1
+ <h1>Editing post</h1>
2
+
3
+ <%= render "form", post: @post %>
4
+
5
+ <br>
6
+
7
+ <div>
8
+ <%= link_to "Show this post", @post %> |
9
+ <%= link_to "Back to posts", posts_path %>
10
+ </div>
@@ -0,0 +1,14 @@
1
+ <p style="color: green"><%= notice %></p>
2
+
3
+ <h1>Posts</h1>
4
+
5
+ <div id="posts">
6
+ <% @posts.each do |post| %>
7
+ <%= render post %>
8
+ <p>
9
+ <%= link_to "Show this post", post %>
10
+ </p>
11
+ <% end %>
12
+ </div>
13
+
14
+ <%= link_to "New post", new_post_path %>
@@ -0,0 +1 @@
1
+ json.array! @posts, partial: "posts/post", as: :post
@@ -0,0 +1,9 @@
1
+ <h1>New post</h1>
2
+
3
+ <%= render "form", post: @post %>
4
+
5
+ <br>
6
+
7
+ <div>
8
+ <%= link_to "Back to posts", posts_path %>
9
+ </div>
@@ -0,0 +1 @@
1
+ json.partial! "posts/post", post: @post
@@ -32,23 +32,23 @@
32
32
  "test": "rspec",
33
33
  "add_acts_as_list": false,
34
34
  "add_administrate": false,
35
- "add_annotate": false,
36
- "add_avo": false,
35
+ "add_annotate": true,
36
+ "add_avo": true,
37
37
  "add_bcrypt": false,
38
38
  "add_brakeman": false,
39
39
  "add_browser": false,
40
40
  "add_bundler_audit": false,
41
41
  "add_chartkick": false,
42
- "add_devise": false,
42
+ "add_devise": true,
43
43
  "add_devise_masquerade": false,
44
44
  "add_dotenv": false,
45
45
  "add_faker": true,
46
- "add_friendly_id": true,
46
+ "add_friendly_id": false,
47
47
  "add_groupdate": false,
48
48
  "add_hexapdf": false,
49
49
  "add_httparty": false,
50
50
  "add_honeybadger": false,
51
- "add_image_processing": false,
51
+ "add_image_processing": true,
52
52
  "add_kaminari": false,
53
53
  "add_lograge": false,
54
54
  "add_minimal_css": true,
@@ -59,11 +59,11 @@
59
59
  "add_pretender": false,
60
60
  "add_public_suffix": false,
61
61
  "add_rails_html_sanitizer": false,
62
- "add_ransack": false,
62
+ "add_ransack": true,
63
63
  "add_redcarpet": false,
64
64
  "add_rolify": false,
65
- "add_rubocop": false,
65
+ "add_rubocop": true,
66
66
  "add_twilio_ruby": false,
67
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/friendly_id/_.rb"
67
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/avo/_.rb"
68
68
  }
69
69
  }
@@ -7,7 +7,7 @@
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/addons/friendly_id/_.rb",
10
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/avo/_.rb",
11
11
  "database": "sqlite3",
12
12
  "skip_git": true,
13
13
  "skip_keeps": false,
@@ -42,23 +42,23 @@
42
42
  "test": "rspec",
43
43
  "add_acts_as_list": false,
44
44
  "add_administrate": false,
45
- "add_annotate": false,
46
- "add_avo": false,
45
+ "add_annotate": true,
46
+ "add_avo": true,
47
47
  "add_bcrypt": false,
48
48
  "add_brakeman": false,
49
49
  "add_browser": false,
50
50
  "add_bundler_audit": false,
51
51
  "add_chartkick": false,
52
- "add_devise": false,
52
+ "add_devise": true,
53
53
  "add_devise_masquerade": false,
54
54
  "add_dotenv": false,
55
55
  "add_faker": true,
56
- "add_friendly_id": true,
56
+ "add_friendly_id": false,
57
57
  "add_groupdate": false,
58
58
  "add_hexapdf": false,
59
59
  "add_httparty": false,
60
60
  "add_honeybadger": false,
61
- "add_image_processing": false,
61
+ "add_image_processing": true,
62
62
  "add_kaminari": false,
63
63
  "add_lograge": false,
64
64
  "add_minimal_css": true,
@@ -69,10 +69,10 @@
69
69
  "add_pretender": false,
70
70
  "add_public_suffix": false,
71
71
  "add_rails_html_sanitizer": false,
72
- "add_ransack": false,
72
+ "add_ransack": true,
73
73
  "add_redcarpet": false,
74
74
  "add_rolify": false,
75
- "add_rubocop": false,
75
+ "add_rubocop": true,
76
76
  "add_twilio_ruby": false
77
77
  }
78
78
  }
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ # Custom add-ons for RailsAppGenerator
5
+ module AddOns
6
+ # Add FactoryBotRails to rails application
7
+ class FactoryBotRails < RailsAppGenerator::Addon
8
+ required_gem gem.version('factory_bot_rails', '6.2.0', 'Provides Rails integration for factory_bot.')
9
+
10
+ def apply
11
+ say 'Setting up FactoryBotRails'
12
+ end
13
+ end
14
+ end
15
+ end
@@ -184,6 +184,7 @@ module RailsAppGenerator
184
184
  # docker
185
185
  add_if(:dotenv) # tested
186
186
  add_if(:factory_bot) # TODO: needs testing
187
+ add_if(:factory_bot_rails) # tested
187
188
  add_if(:faker) # tested
188
189
  add_if(:friendly_id) # tested
189
190
  add_if(:generators) # TODO: needs testing
@@ -365,6 +366,14 @@ module RailsAppGenerator
365
366
  template_files.map { |template_file| read_template(template_file) }.join(join)
366
367
  end
367
368
 
369
+ # swap two lines using the gsub_file
370
+ def swap_lines(file, swap1, swap2)
371
+ swap_temp = '##SWAP_IT##'
372
+ gsub_file(file, swap1, swap_temp)
373
+ gsub_file(file, swap2, swap1)
374
+ gsub_file(file, swap_temp, swap2)
375
+ end
376
+
368
377
  # Moves a file at given location, to another location. Both files are relative to the destination_root
369
378
  #
370
379
  # ==== Parameters
@@ -118,6 +118,7 @@ KConfig.configure do |config|
118
118
  # docker
119
119
  rag.add_option :add_dotenv , type: :boolean, default: false
120
120
  # factory_bot
121
+ rag.add_option :add_factory_bot_rails , type: :boolean, default: false
121
122
  rag.add_option :add_faker , type: :boolean, default: false
122
123
  rag.add_option :add_friendly_id , type: :boolean, default: false
123
124
  # generators
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.2.38'
4
+ VERSION = '0.2.39'
5
5
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.2.38",
3
+ "version": "0.2.39",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.2.38",
9
+ "version": "0.2.39",
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.38",
3
+ "version": "0.2.39",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "args": {
3
- "app_path": "avo",
3
+ "app_path": "r7_avo",
4
4
  "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
5
5
  },
6
6
  "opts": {
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.38
4
+ version: 0.2.39
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-22 00:00:00.000000000 Z
11
+ date: 2022-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootsnap
@@ -214,6 +214,8 @@ files:
214
214
  - after_templates/addons/avo/app/controllers/home_controller.rb
215
215
  - after_templates/addons/avo/app/models/category.rb
216
216
  - after_templates/addons/avo/app/models/post.rb
217
+ - after_templates/addons/avo/app/models/user.rb
218
+ - after_templates/addons/avo/app/services/seed_service.rb
217
219
  - after_templates/addons/avo/app/views/home/index.html.erb
218
220
  - after_templates/addons/avo/app/views/home/quick_signin.html.erb
219
221
  - after_templates/addons/avo/app/views/layouts/_footer.html.erb
@@ -307,7 +309,15 @@ files:
307
309
  - after_templates/addons/friendly_id/app/views/layouts/_footer.html.erb
308
310
  - after_templates/addons/friendly_id/app/views/layouts/_navbar.html.erb
309
311
  - after_templates/addons/friendly_id/app/views/layouts/application.html.erb
312
+ - after_templates/addons/friendly_id/app/views/posts/_form.html.erb
313
+ - after_templates/addons/friendly_id/app/views/posts/_post.html.erb
314
+ - after_templates/addons/friendly_id/app/views/posts/_post.json.jbuilder
315
+ - after_templates/addons/friendly_id/app/views/posts/edit.html.erb
316
+ - after_templates/addons/friendly_id/app/views/posts/index.html.erb
317
+ - after_templates/addons/friendly_id/app/views/posts/index.json.jbuilder
318
+ - after_templates/addons/friendly_id/app/views/posts/new.html.erb
310
319
  - after_templates/addons/friendly_id/app/views/posts/show.html.erb
320
+ - after_templates/addons/friendly_id/app/views/posts/show.json.jbuilder
311
321
  - after_templates/addons/friendly_id/db/seeds.rb
312
322
  - after_templates/addons/hexapdf/_.rb
313
323
  - after_templates/addons/hexapdf/app/controllers/home_controller.rb
@@ -654,6 +664,7 @@ files:
654
664
  - lib/rails_app_generator/addons/docker_compose.rb
655
665
  - lib/rails_app_generator/addons/dotenv.rb
656
666
  - lib/rails_app_generator/addons/factory_bot.rb
667
+ - lib/rails_app_generator/addons/factory_bot_rails.rb
657
668
  - lib/rails_app_generator/addons/faker.rb
658
669
  - lib/rails_app_generator/addons/foreman.rb
659
670
  - lib/rails_app_generator/addons/friendly_id.rb