rails_app_generator 0.2.38 → 0.2.39

Sign up to get free protection for your applications and to get access to all the features.
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