rails_app_generator 0.2.33 → 0.2.36

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/after_templates/addons/avo/_.rb +38 -22
  4. data/after_templates/addons/avo/app/avo/dashboards/dashboard.rb +12 -0
  5. data/after_templates/addons/avo/app/avo/resources/category_resource.rb +27 -0
  6. data/after_templates/addons/avo/app/avo/resources/post_resource.rb +25 -0
  7. data/after_templates/addons/avo/app/avo/resources/user_resource.rb +23 -0
  8. data/after_templates/addons/avo/app/controllers/home_controller.rb +4 -0
  9. data/after_templates/addons/avo/app/models/category.rb +7 -0
  10. data/after_templates/addons/avo/app/models/post.rb +9 -0
  11. data/after_templates/addons/avo/app/views/home/index.html.erb +1 -1
  12. data/after_templates/addons/avo/app/views/home/quick_signin.html.erb +3 -0
  13. data/after_templates/addons/avo/app/views/layouts/_footer.html.erb +0 -3
  14. data/after_templates/addons/avo/app/views/layouts/_navbar.html.erb +13 -8
  15. data/after_templates/addons/avo/app/views/layouts/application.html.erb +15 -2
  16. data/after_templates/addons/avo/config/initializers/avo.rb +105 -0
  17. data/after_templates/addons/avo/config/locales/en.yml +4 -0
  18. data/after_templates/addons/avo/db/seeds.rb +69 -12
  19. data/after_templates/addons/kaminari/_.rb +4 -4
  20. data/after_templates/addons/kaminari/app/assets/images/kaminari-custom-views-detailed.png +0 -0
  21. data/after_templates/addons/kaminari/app/assets/images/kaminari-custom-views.png +0 -0
  22. data/after_templates/addons/kaminari/app/controllers/posts_controller.rb +70 -0
  23. data/after_templates/addons/kaminari/app/views/home/index.html.erb +19 -1
  24. data/after_templates/addons/kaminari/app/views/layouts/_footer.html.erb +0 -1
  25. data/after_templates/addons/kaminari/app/views/layouts/_navbar.html.erb +1 -3
  26. data/after_templates/addons/kaminari/app/views/layouts/application.html.erb +5 -0
  27. data/after_templates/addons/kaminari/app/views/posts/index.html.erb +32 -0
  28. data/after_templates/addons/kaminari/db/seeds.rb +3 -7
  29. data/docs/last_run/app_generator_class.json +17 -1
  30. data/docs/last_run/app_generator_data.json +11 -8
  31. data/docs/last_run/rails_options_class.json +17 -1
  32. data/docs/last_run/rails_options_data.json +11 -8
  33. data/lib/rails_app_generator/addons/avo.rb +8 -0
  34. data/lib/rails_app_generator/addons/image_processing.rb +21 -0
  35. data/lib/rails_app_generator/addons/kaminari.rb +1 -7
  36. data/lib/rails_app_generator/addons/ransack.rb +34 -0
  37. data/lib/rails_app_generator/app_generator.rb +8 -0
  38. data/lib/rails_app_generator/rag_initializer.rb +2 -1
  39. data/lib/rails_app_generator/version.rb +1 -1
  40. data/package-lock.json +2 -2
  41. data/package.json +1 -1
  42. data/profiles/addons/avo.json +3 -0
  43. data/profiles/addons/kaminari.json +1 -0
  44. data/templates/thor_task/profile/app/views/layouts/_footer.html.erb.tt +0 -1
  45. metadata +17 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 66f1a50226d59e7d8a1b2308aed113cf1b1580e1aa9d267c63af8319d821f41f
4
- data.tar.gz: 00e8cddf0d07d555f291c792eb32c49c06f77b42a873d95acba5d2b749cd2f85
3
+ metadata.gz: cee7a5479ca62a445db49b49b597da3a641a39efb84d56f7da3c4c6b973ad52f
4
+ data.tar.gz: 9e12b9abed0a5c13bf57b3cdccacf95d97be64ac2a9e3097d84039f00e66c438
5
5
  SHA512:
6
- metadata.gz: 1b64d1128c409cdecbdef14b403782cafc44cecc9ad6e0880904189a904e35c8345b133bdeb0a5d4d89fe0a7f6b161c4b342a5f99c6c3bb73e58ea5e204355cd
7
- data.tar.gz: 0cb3407c89cdb3edbfec3bfc944b59ce79eb2ce5939d93bdb0edfc4430ebe3fac353db2f5660213ee3d6d7fed8994848b93504fef1b593b5d22083956c5fcc9c
6
+ metadata.gz: 42698c111605eda6d7e8d014a7d1472b2438227f8f663cc4ab92837373a1f4a8526704adbfcab21fc1ea367fa2879586621ea06371ea511fe728989bb2c43925
7
+ data.tar.gz: d798bef8f2dc50312db9708ece229b14eb69215bc3de141a66aa51ea8e31df62fc83bef8b2540045e2097c25e136b140bb868dc0e55a5cffcf89fdf1c9dfa438
data/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ ## [0.2.35](https://github.com/klueless-io/rails_app_generator/compare/v0.2.34...v0.2.35) (2022-08-20)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add image-processing addon ([3466708](https://github.com/klueless-io/rails_app_generator/commit/3466708e66cfc8da487f619f77516f863ef5cb46))
7
+
8
+ ## [0.2.34](https://github.com/klueless-io/rails_app_generator/compare/v0.2.33...v0.2.34) (2022-08-19)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * add kaminari profile ([f9b044b](https://github.com/klueless-io/rails_app_generator/commit/f9b044b6e718fdfa851562ea7d4ddab39066d0de))
14
+
15
+ ## [0.2.33](https://github.com/klueless-io/rails_app_generator/compare/v0.2.32...v0.2.33) (2022-08-19)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * add kaminari addon ([b57fd5b](https://github.com/klueless-io/rails_app_generator/commit/b57fd5bdda219852b659404660187cbd0d8ec5dc))
21
+ * add kaminari addon ([d5774ed](https://github.com/klueless-io/rails_app_generator/commit/d5774ed173b0d594e2228278c2d34edce3a80ac9))
22
+
1
23
  ## [0.2.32](https://github.com/klueless-io/rails_app_generator/compare/v0.2.31...v0.2.32) (2022-08-19)
2
24
 
3
25
 
@@ -4,7 +4,8 @@
4
4
  #
5
5
  # exe/rag addons/avo
6
6
  #
7
- # based on: https://www.youtube.com/watch?v=WgNK-oINFww
7
+ # based on: https://youtu.be/WgNK-oINFww
8
+ # https://youtu.be/BK47E7TMXn0
8
9
 
9
10
  self.local_template_path = File.dirname(__FILE__)
10
11
 
@@ -12,43 +13,58 @@ gac 'base rails 7 image created'
12
13
 
13
14
  prepare_environment
14
15
 
15
- add_controller('home', 'index')
16
-
17
- route("root 'home#index'")
18
-
19
- force_copy
20
-
21
- directory "app/controllers"
22
- directory "app/views/home"
23
- directory "app/views/layouts"
24
- template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
25
-
26
- template 'db/seeds.rb' , 'db/seeds.rb'
27
-
28
16
  after_bundle do
17
+ scaffolds
18
+ setup_customizations
29
19
  setup_db
30
20
  setup_avo
31
21
  end
32
22
 
23
+ def scaffolds
24
+ add_scaffold_controller('users', 'name', 'email')
25
+ # add_scaffold('author', 'name', 'email', 'bio:text')
26
+ add_scaffold('category', 'title', 'description:text')
27
+ add_scaffold('post', 'title content:text', 'published:boolean', 'user:references', 'category:references')
28
+ add_scaffold('location', 'name', 'description:text') #, 'photo:file')
29
+ add_scaffold('room', 'name', 'description:text', 'location:references') #, 'photo:file'
30
+ add_scaffold('booking', 'user:references', 'room:references', 'booked_at:datetime', 'booked_for:integer')
31
+ end
32
+
33
+ def setup_customizations
34
+ route("root 'home#index'")
35
+
36
+ force_copy
37
+
38
+ add_controller('home', 'index', 'quick_signin')
39
+
40
+ directory "app/controllers"
41
+ directory "app/models"
42
+ directory "app/views"
43
+ template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
44
+ end
45
+
33
46
  def setup_db
34
- add_scaffold('author', 'name:string', 'email:string', 'bio:text')
35
- add_scaffold('category', 'title:string', 'description:text')
36
- add_scaffold('post', 'title:string content:text', 'published:boolean', 'author:references', 'category:references')
37
- add_scaffold('product', 'name', 'quantity:integer', 'price:decimal', 'author:references')
47
+ template 'db/seeds.rb' , 'db/seeds.rb'
38
48
 
39
49
  db_migrate
40
50
  db_seed
41
51
  end
42
52
 
43
53
  def setup_avo
44
- generate('avo:install')
45
- generate('avo:resource Product')
46
- generate('avo:resource Post')
47
- generate('avo:resource Author')
54
+ # generate('avo:install')
55
+
48
56
  generate('avo:resource Category')
57
+ generate('avo:resource Post')
58
+ generate('avo:resource Location')
59
+ generate('avo:resource Room')
60
+ generate('avo:resource Booking')
49
61
  generate('avo:resource User')
50
62
  generate('avo:dashboard Dashboard')
51
63
 
64
+ directory "app/avo"
65
+ directory "config/initializers"
66
+ directory "config/locales"
67
+
52
68
  # add devise support
53
69
  gsub_file 'config/initializers/avo.rb', %(# config.current_user_method = {}), 'config.current_user_method = :current_user'
54
70
  end
@@ -0,0 +1,12 @@
1
+ class Dashboard < Avo::Dashboards::BaseDashboard
2
+ self.id = "dashboard"
3
+ self.name = "Dashboard"
4
+ # self.description = "Tiny dashboard description"
5
+ # self.grid_cols = 3
6
+ # self.visible = -> do
7
+ # true
8
+ # end
9
+
10
+ # cards go here
11
+ # card UsersCount
12
+ end
@@ -0,0 +1,27 @@
1
+ class CategoryResource < Avo::BaseResource
2
+ # tutorial (related category): https://youtu.be/WgNK-oINFww?t=328
3
+
4
+ self.title = :title
5
+ self.includes = []
6
+
7
+ self.search_query = ->(params:) do
8
+ scope
9
+ .ransack(id_eq: params[:q], name_cont: params[:q], title_cont: params[:q], description_cont: params[:q], m: "or")
10
+ .result(distinct: false)
11
+ end
12
+
13
+ field :id, as: :id
14
+ field :title, as: :text
15
+ field :excerpt, as: :text, only_on: :index
16
+ field :description, as: :textarea
17
+
18
+ # tutorial (computed field): https://youtu.be/WgNK-oINFww?t=514
19
+ field :posts_count, as: :text do |model|
20
+ model.posts.count
21
+ end
22
+
23
+ # tutorial (attach scope): https://youtu.be/WgNK-oINFww?t=423
24
+ field :posts, as: :has_many, attach_scope: -> {
25
+ query.where.not(category_id: parent.id).or(query.where(category_id: nil))
26
+ }
27
+ end
@@ -0,0 +1,25 @@
1
+ class PostResource < Avo::BaseResource
2
+ # tutorial (title): https://youtu.be/WgNK-oINFww?t=301
3
+ self.title = :title
4
+
5
+ # tutorial (n+1): https://youtu.be/WgNK-oINFww?t=557
6
+ self.includes = [:category]
7
+
8
+ # tutorial (search): https://youtu.be/WgNK-oINFww?t=244
9
+ self.search_query = ->(params:) do
10
+ scope
11
+ .ransack(id_eq: params[:q], title_cont: params[:q], m: "or")
12
+ .result(distinct: false)
13
+ end
14
+
15
+ # tutorial (edit fields): https://youtu.be/WgNK-oINFww?t=133
16
+ field :id, as: :id
17
+ field :title, as: :text
18
+ field :content, as: :trix
19
+
20
+ # tutorial (read only fields): https://youtu.be/WgNK-oINFww?t=228
21
+ field :excerpt, as: :text, only_on: :index
22
+
23
+ # tutorial (related category): https://youtu.be/WgNK-oINFww?t=328
24
+ field :category, as: :belongs_to
25
+ end
@@ -0,0 +1,23 @@
1
+ # tutorial (user resource): https://youtu.be/WgNK-oINFww?t=599
2
+ class UserResource < Avo::BaseResource
3
+ # https://docs.avohq.io/2.0/resources.html#devise-password-optional
4
+ # you need to fill in the password when creating a new user,
5
+ # but when editing a user you can leave the password field empty
6
+ self.devise_password_optional = true
7
+
8
+ # tutorial (better search experience): https://youtu.be/WgNK-oINFww?t=649
9
+ self.title = :email
10
+ self.includes = []
11
+
12
+ self.search_query = ->(params:) do
13
+ scope
14
+ .ransack(id_eq: params[:q], name_cont: params[:q], email_cont: params[:q], m: "or")
15
+ .result(distinct: false)
16
+ end
17
+
18
+ field :id, as: :id
19
+ field :email, as: :gravatar, link_to_resource: true, as_avatar: true
20
+ field :name, as: :text
21
+ field :email, as: :text, as_description: true
22
+ field :password, as: :text
23
+ end
@@ -1,4 +1,8 @@
1
1
  class HomeController < ApplicationController
2
2
  def index
3
3
  end
4
+
5
+ def quick_signin
6
+ sign_in(:user, User.first)
7
+ end
4
8
  end
@@ -0,0 +1,7 @@
1
+ class Category < ApplicationRecord
2
+ has_many :posts
3
+
4
+ def excerpt
5
+ ActionView::Base.full_sanitizer.sanitize(description).truncate(100)
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ class Post < ApplicationRecord
2
+ belongs_to :author, class_name: 'User', foreign_key: :user_id
3
+ belongs_to :category
4
+
5
+ # tutorial: https://youtu.be/WgNK-oINFww?t=209
6
+ def excerpt
7
+ ActionView::Base.full_sanitizer.sanitize(content).truncate(100)
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
- <h1>Avo</h1>
1
+ <h1>I18n.t('application_name')</h1>
2
2
 
3
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>
@@ -0,0 +1,3 @@
1
+ <h1>Quick SignIn</h1>
2
+
3
+ <p>You are signed in as: <b><%= current_user.email %></b></p>
@@ -1,3 +0,0 @@
1
- <footer>
2
- <hr />
3
- </footer>
@@ -1,8 +1,13 @@
1
- <header>
2
- <%= link_to 'Home', root_path %> |
3
- <%= link_to 'Authors', authors_path %> |
4
- <%= link_to 'Posts', posts_path %> |
5
- <%= link_to 'Products', products_path %> |
6
- <%= link_to 'ADMIN', avo_path %>
7
- <hr />
8
- </header>
1
+ <%= link_to 'Home', root_path %> |
2
+ <%= link_to 'Quick Sign In', home_quick_signin_path %> |
3
+ <%= link_to 'AVO', avo_path %>
4
+ (
5
+ <%= link_to 'Posts', posts_path, class: 'simple_scaffold' %> |
6
+ <%= link_to 'Categories', categories_path, class: 'simple_scaffold' %> |
7
+ <%= link_to 'Authors', users_path, class: 'simple_scaffold' %>
8
+ )
9
+ (
10
+ <%= link_to 'Locations', locations_path, class: 'simple_scaffold' %> |
11
+ <%= link_to 'Rooms', rooms_path, class: 'simple_scaffold' %> |
12
+ <%= link_to 'Bookings', bookings_path, class: 'simple_scaffold' %>
13
+ )
@@ -11,13 +11,26 @@
11
11
  <%- else -%>
12
12
  <%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
13
13
  <%- end -%>
14
+ <style>
15
+ .bold {
16
+ font-weight: bold;
17
+ }
18
+ .simple_scaffold {
19
+ color: #333333;
20
+ }
21
+ </style>
14
22
  </head>
15
23
 
16
24
  <body>
17
- <%%= render 'layouts/navbar' %>
25
+ <header>
26
+ <%%= render 'layouts/navbar' %>
27
+ </header>
28
+ <hr>
18
29
  <main>
19
30
  <%%= yield %>
20
31
  </main>
21
- <%%= render 'layouts/footer' %>
32
+ <footer>
33
+ <%%= render 'layouts/footer' %>
34
+ </footer>
22
35
  </body>
23
36
  </html>
@@ -0,0 +1,105 @@
1
+ # frozen_string_literal: true
2
+
3
+ # For more information regaring these settings check out our docs https://docs.avohq.io
4
+ Avo.configure do |config|
5
+ ## == Routing ==
6
+ config.root_path = '/admin'
7
+
8
+ # https://docs.avohq.io/2.0/customization.html
9
+ config.app_name = 'Custom Application'
10
+ config.id_links_to_resource = true
11
+ # config.resource_controls_placement = :left
12
+
13
+ # Where should the user be redirected when visting the `/avo` url
14
+ # config.home_path = nil
15
+
16
+ ## == Licensing ==
17
+ config.license = 'pro' # change this to 'pro' when you add the license key
18
+ config.license_key = ENV['AVO_LICENSE_KEY']
19
+
20
+ ## == Set the context ==
21
+ config.set_context do
22
+ # Return a context object that gets evaluated in Avo::ApplicationController
23
+ end
24
+
25
+ ## == Authentication ==
26
+ config.current_user_method = :current_user
27
+ # config.authenticate_with = {}
28
+
29
+ ## == Authorization ==
30
+ # config.authorization_methods = {
31
+ # index: 'index?',
32
+ # show: 'show?',
33
+ # edit: 'edit?',
34
+ # new: 'new?',
35
+ # update: 'update?',
36
+ # create: 'create?',
37
+ # destroy: 'destroy?',
38
+ # }
39
+ # config.raise_error_on_missing_policy = false
40
+
41
+ ## == Localization ==
42
+ # config.locale = 'en-US'
43
+
44
+ ## == Customization ==
45
+ # config.app_name = 'Avocadelicious'
46
+ # config.timezone = 'UTC'
47
+ # config.currency = 'USD'
48
+ # config.per_page = 24
49
+ # config.per_page_steps = [12, 24, 48, 72]
50
+ # config.via_per_page = 8
51
+ # config.default_view_type = :table
52
+ # config.hide_layout_when_printing = false
53
+ # config.id_links_to_resource = false
54
+ # config.full_width_container = false
55
+ # config.full_width_index_view = false
56
+ # config.cache_resources_on_index_view = true
57
+ # config.search_debounce = 300
58
+ # config.view_component_path = "app/components"
59
+ # config.display_license_request_timeout_error = true
60
+ # config.disabled_features = []
61
+
62
+ ## == Breadcrumbs ==
63
+ # config.display_breadcrumbs = true
64
+ config.set_initial_breadcrumbs do
65
+ add_breadcrumb "Home", '/admin'
66
+ end
67
+
68
+ ## == Menus ==
69
+ config.main_menu = -> {
70
+ section "Dashboards", icon: "dashboards" do
71
+ all_dashboards
72
+ end
73
+
74
+ section "Resources", icon: "resources" do
75
+ group "Blog" do
76
+ resource :post
77
+ # resource :comment
78
+ resource :category
79
+ resource :author
80
+ end
81
+
82
+ group "Reservations" do # , collapsable: true, collapsed: true
83
+ resource :location
84
+ resource :room
85
+ resource :booking
86
+ end
87
+
88
+ group "Admin" do
89
+ resource :user
90
+ end
91
+ end
92
+
93
+ section "Tools", icon: "tools" do
94
+ all_tools
95
+ end
96
+
97
+ section I18n.t('admin.external_links'), icon: "heroicons/outline/link", collapsable: true, collapsed: true do
98
+ link 'Appy Dave', path: 'https://appydave.com', target: :_blank
99
+ link 'Klueless', path: 'https://klueless.io/', target: :_blank
100
+ end
101
+ }
102
+ config.profile_menu = -> {
103
+ link "Profile", path: "/admin/profile", icon: "user-circle"
104
+ }
105
+ end
@@ -0,0 +1,4 @@
1
+ en:
2
+ application_name: "AVO Sample Application"
3
+ admin:
4
+ external_links: 'External Links'
@@ -10,6 +10,46 @@ def fake_category
10
10
  ]
11
11
  end
12
12
 
13
+ def avatar_emails
14
+ [
15
+ 'ben@ben.com',
16
+ 'david@hey.com',
17
+ 'adrian@adrianthedev.com',
18
+ 'david@ideasmen.com.au'
19
+ ]
20
+ end
21
+
22
+
23
+ def email_domain
24
+ [
25
+ 'gmail.com',
26
+ 'outlook.com',
27
+ 'yahoo.com',
28
+ 'hotmail.com',
29
+ 'aol.com',
30
+ 'mail.com',
31
+ ].sample
32
+ end
33
+
34
+ def common_names
35
+ [
36
+ 'Ben',
37
+ 'John',
38
+ 'James',
39
+ 'Robert',
40
+ 'Michael',
41
+ 'William',
42
+ 'Mary',
43
+ 'Patricia',
44
+ 'Linda',
45
+ 'Barbara',
46
+ 'Elizabeth',
47
+ 'Jennifer',
48
+ 'Maria',
49
+ 'Susan',
50
+ ]
51
+ end
52
+
13
53
  def fake_title
14
54
  [
15
55
  'Fundamentals of Wavelets',
@@ -108,25 +148,42 @@ def fake_title
108
148
  ].sample
109
149
  end
110
150
 
111
- 60.times do
112
- Author.create!(name: Faker::Name.name, bio: Faker::Lorem.words(number: 5).join(' '), email: Faker::Internet.email)
151
+ User.find_or_create_by(email: "admin@admin.com") do |user|
152
+ user.name = 'Admin'
153
+ user.password = 'password'
154
+ user.role = :admin
113
155
  end
114
156
 
157
+ common_names.each do |first_name|
158
+ last_name = Faker::Name.last_name
159
+ email = Faker::Internet.email(name: first_name.downcase, domain: email_domain)
160
+ User.create!(name: "#{first_name} #{last_name}", email: email, password: 'password', role: :user)
161
+ end
162
+
163
+ avatar_emails.each do |email|
164
+ first_name = email.split('@').first
165
+ last_name = Faker::Name.last_name
166
+ User.create!(name: "#{first_name} #{last_name}", email: email, password: 'password', role: :user)
167
+ end
168
+ # bio: Faker::Lorem.words(number: 5).join(' ')
169
+
115
170
  fake_category.each do |category|
116
171
  Category.create!(title: category, description: Faker::Lorem.sentence)
117
172
  end
118
173
 
119
- 100.times do |i|
174
+ 40.times do
120
175
  Post.create!(title: fake_title,
121
- content: "This is the body of post #{i}",
176
+ content: Faker::Lorem.sentences(number: 5).join('<br />'),
122
177
  published: Faker::Boolean.boolean(true_ratio: 0.6),
123
- author: Author.all.sample)
178
+ category: Category.all.sample,
179
+ author: User.all.sample)
124
180
  end
125
181
 
126
- 200.times do
127
- Product.create!(
128
- name: Faker::Name.name,
129
- quantity: Faker::Number.number(digits: 2),
130
- price: Faker::Number.decimal(l_digits: 4)
131
- )
132
- end
182
+ # 200.times do
183
+ # Product.create!(
184
+ # name: Faker::Name.name,
185
+ # quantity: Faker::Number.number(digits: 2),
186
+ # price: Faker::Number.decimal(l_digits: 4),
187
+ # author: Author.all.sample
188
+ # )
189
+ # end
@@ -17,9 +17,7 @@ after_bundle do
17
17
  end
18
18
 
19
19
  def scaffolds
20
- # add_scaffold('post', 'title', 'body:text', 'user:references')
21
- # add_scaffold('people', 'first_name', 'last_name', 'age:integer', 'address:text')
22
- # add_scaffold('product', 'name', 'price:integer')
20
+ add_scaffold('post', 'title', 'body:text', 'order:integer')
23
21
  end
24
22
 
25
23
  def setup_customizations
@@ -30,9 +28,11 @@ def setup_customizations
30
28
  add_controller('home', 'index')
31
29
 
32
30
  directory "app/controllers"
33
- directory "app/models"
31
+ directory "app/assets"
34
32
  directory "app/views"
35
33
  template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
34
+
35
+ gsub_file 'config/initializers/kaminari_config.rb', '# config.default_per_page = 25', 'config.default_per_page = 10'
36
36
  end
37
37
 
38
38
  def setup_db
@@ -0,0 +1,70 @@
1
+ class PostsController < ApplicationController
2
+ before_action :set_post, only: %i[ show edit update destroy ]
3
+
4
+ # GET /posts or /posts.json
5
+ def index
6
+ @posts = Post.page(params[:page])
7
+ end
8
+
9
+ # GET /posts/1 or /posts/1.json
10
+ def show
11
+ end
12
+
13
+ # GET /posts/new
14
+ def new
15
+ @post = Post.new
16
+ end
17
+
18
+ # GET /posts/1/edit
19
+ def edit
20
+ end
21
+
22
+ # POST /posts or /posts.json
23
+ def create
24
+ @post = Post.new(post_params)
25
+
26
+ respond_to do |format|
27
+ if @post.save
28
+ format.html { redirect_to post_url(@post), notice: "Post was successfully created." }
29
+ format.json { render :show, status: :created, location: @post }
30
+ else
31
+ format.html { render :new, status: :unprocessable_entity }
32
+ format.json { render json: @post.errors, status: :unprocessable_entity }
33
+ end
34
+ end
35
+ end
36
+
37
+ # PATCH/PUT /posts/1 or /posts/1.json
38
+ def update
39
+ respond_to do |format|
40
+ if @post.update(post_params)
41
+ format.html { redirect_to post_url(@post), notice: "Post was successfully updated." }
42
+ format.json { render :show, status: :ok, location: @post }
43
+ else
44
+ format.html { render :edit, status: :unprocessable_entity }
45
+ format.json { render json: @post.errors, status: :unprocessable_entity }
46
+ end
47
+ end
48
+ end
49
+
50
+ # DELETE /posts/1 or /posts/1.json
51
+ def destroy
52
+ @post.destroy
53
+
54
+ respond_to do |format|
55
+ format.html { redirect_to posts_url, notice: "Post was successfully destroyed." }
56
+ format.json { head :no_content }
57
+ end
58
+ end
59
+
60
+ private
61
+ # Use callbacks to share common setup or constraints between actions.
62
+ def set_post
63
+ @post = Post.find(params[:id])
64
+ end
65
+
66
+ # Only allow a list of trusted parameters through.
67
+ def post_params
68
+ params.require(:post).permit(:title, :body, :order)
69
+ end
70
+ end
@@ -1,3 +1,21 @@
1
1
  <h1>Kaminari</h1>
2
2
 
3
- <p>Description goes here</p>
3
+ <p>Easily add pagination to your Ruby web apps</p>
4
+
5
+ <h2>Configuration for this example is located at</h2>
6
+
7
+ <pre><code>config/initializers/kaminari_config.rb</code></pre>
8
+
9
+ <pre><code><%= File.read("config/initializers/kaminari_config.rb") %></code></pre>
10
+
11
+ <h2>Run this template generator if you need to customize the pagination views</h2>
12
+
13
+ <pre><code>rails g kaminari:views default</code></pre>
14
+
15
+ <h3>List of files</h3>
16
+
17
+ <%= image_tag("kaminari-custom-views.png") %>
18
+
19
+ <h3>File details</h3>
20
+
21
+ <%= image_tag("kaminari-custom-views-detailed.png") %>
@@ -1,5 +1,3 @@
1
1
  <%= link_to 'Home', root_path %>
2
- <%# link_to 'Products', products_path %>
3
- <%# link_to 'Posts', posts_path %>
4
- <%# link_to 'People', people_path %>
2
+ | <%= link_to 'Posts', posts_path %>
5
3
  <hr />
@@ -11,6 +11,11 @@
11
11
  <%- else -%>
12
12
  <%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
13
13
  <%- end -%>
14
+ <style>
15
+ table {
16
+ table-layout: auto;
17
+ }
18
+ </style>
14
19
  </head>
15
20
 
16
21
  <body>
@@ -0,0 +1,32 @@
1
+ <p style="color: green"><%= notice %></p>
2
+
3
+ <h1>Posts</h1>
4
+
5
+ <%= link_to "New post", new_post_path %>
6
+
7
+ <hr>
8
+ <%= paginate @posts %>
9
+ <hr>
10
+
11
+ <div id="posts">
12
+ <h1>Players List</h1>
13
+ <table>
14
+ <tr>
15
+ <th>Title</th>
16
+ <th>Body</th>
17
+ <th>Order</th>
18
+ <th></th>
19
+ </tr>
20
+ <% @posts.each do |post| %>
21
+ <tr>
22
+ <td><%=post.title %></td>
23
+ <td><%=post.body %></td><td>
24
+ <td><%=post.order %></td>
25
+ <td><%= link_to 'Show', post %></td>
26
+ </tr>
27
+ <% end %>
28
+ </table>
29
+ </div>
30
+
31
+ <%= page_entries_info @posts %>
32
+
@@ -1,7 +1,3 @@
1
- # david = User.create(email: 'david@site.com', name: 'david', password: 'password')
2
- # james = User.create(email: 'james@site.com', name: 'james', password: 'password')
3
- # sally = User.create(email: 'sally@site.com', name: 'sally', password: 'password')
4
-
5
- # 10.times do |i|
6
- # Post.create(title: "Post #{i}", body: "This is the body of post #{i}", user: User.all.sample)
7
- # end
1
+ 105.times do |i|
2
+ Post.create(title: "Post #{i}", body: Faker::Lorem.words(number: 5).join(' '), order: i)
3
+ end
@@ -57,6 +57,7 @@
57
57
  "add_hexapdf",
58
58
  "add_httparty",
59
59
  "add_honeybadger",
60
+ "add_image_processing",
60
61
  "add_kaminari",
61
62
  "add_lograge",
62
63
  "add_minimal_css",
@@ -67,6 +68,7 @@
67
68
  "add_pretender",
68
69
  "add_public_suffix",
69
70
  "add_rails_html_sanitizer",
71
+ "add_ransack",
70
72
  "add_redcarpet",
71
73
  "add_rolify",
72
74
  "add_rubocop",
@@ -119,7 +121,7 @@
119
121
  "name": "ruby",
120
122
  "description": "Path to the Ruby binary of your choice",
121
123
  "type": "string",
122
- "default": "/Users/davidcruwys/.asdf/installs/ruby/2.7.6/bin/ruby",
124
+ "default": "/Users/davidcruwys/.asdf/installs/ruby/3.1.1/bin/ruby",
123
125
  "required": false
124
126
  },
125
127
  {
@@ -472,6 +474,13 @@
472
474
  "default": false,
473
475
  "required": false
474
476
  },
477
+ {
478
+ "name": "add_image_processing",
479
+ "description": "Indicates when to generate add image processing",
480
+ "type": "boolean",
481
+ "default": false,
482
+ "required": false
483
+ },
475
484
  {
476
485
  "name": "add_kaminari",
477
486
  "description": "Indicates when to generate add kaminari",
@@ -542,6 +551,13 @@
542
551
  "default": false,
543
552
  "required": false
544
553
  },
554
+ {
555
+ "name": "add_ransack",
556
+ "description": "Indicates when to generate add ransack",
557
+ "type": "boolean",
558
+ "default": false,
559
+ "required": false
560
+ },
545
561
  {
546
562
  "name": "add_redcarpet",
547
563
  "description": "Indicates when to generate add redcarpet",
@@ -2,7 +2,7 @@
2
2
  "options": {
3
3
  "skip_namespace": false,
4
4
  "skip_collision_check": false,
5
- "ruby": "/Users/davidcruwys/.asdf/installs/ruby/2.7.6/bin/ruby",
5
+ "ruby": "/Users/davidcruwys/.asdf/installs/ruby/3.1.1/bin/ruby",
6
6
  "database": "sqlite3",
7
7
  "skip_git": true,
8
8
  "skip_keeps": false,
@@ -32,21 +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
- "add_bundler_audit": true,
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
- "add_faker": false,
45
+ "add_faker": true,
46
46
  "add_groupdate": false,
47
47
  "add_hexapdf": false,
48
48
  "add_httparty": false,
49
49
  "add_honeybadger": false,
50
+ "add_image_processing": true,
51
+ "add_kaminari": false,
50
52
  "add_lograge": false,
51
53
  "add_minimal_css": true,
52
54
  "minimal_css_library": "water.css",
@@ -56,10 +58,11 @@
56
58
  "add_pretender": false,
57
59
  "add_public_suffix": false,
58
60
  "add_rails_html_sanitizer": false,
61
+ "add_ransack": true,
59
62
  "add_redcarpet": false,
60
63
  "add_rolify": false,
61
- "add_rubocop": false,
64
+ "add_rubocop": true,
62
65
  "add_twilio_ruby": false,
63
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/bundler_audit/_.rb"
66
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/avo/_.rb"
64
67
  }
65
68
  }
@@ -57,6 +57,7 @@
57
57
  "add_hexapdf",
58
58
  "add_httparty",
59
59
  "add_honeybadger",
60
+ "add_image_processing",
60
61
  "add_kaminari",
61
62
  "add_lograge",
62
63
  "add_minimal_css",
@@ -67,6 +68,7 @@
67
68
  "add_pretender",
68
69
  "add_public_suffix",
69
70
  "add_rails_html_sanitizer",
71
+ "add_ransack",
70
72
  "add_redcarpet",
71
73
  "add_rolify",
72
74
  "add_rubocop",
@@ -119,7 +121,7 @@
119
121
  "name": "ruby",
120
122
  "description": "Path to the Ruby binary of your choice",
121
123
  "type": "string",
122
- "default": "/Users/davidcruwys/.asdf/installs/ruby/2.7.6/bin/ruby",
124
+ "default": "/Users/davidcruwys/.asdf/installs/ruby/3.1.1/bin/ruby",
123
125
  "required": false
124
126
  },
125
127
  {
@@ -472,6 +474,13 @@
472
474
  "default": false,
473
475
  "required": false
474
476
  },
477
+ {
478
+ "name": "add_image_processing",
479
+ "description": "",
480
+ "type": "boolean",
481
+ "default": false,
482
+ "required": false
483
+ },
475
484
  {
476
485
  "name": "add_kaminari",
477
486
  "description": "",
@@ -542,6 +551,13 @@
542
551
  "default": false,
543
552
  "required": false
544
553
  },
554
+ {
555
+ "name": "add_ransack",
556
+ "description": "",
557
+ "type": "boolean",
558
+ "default": false,
559
+ "required": false
560
+ },
545
561
  {
546
562
  "name": "add_redcarpet",
547
563
  "description": "",
@@ -6,8 +6,8 @@
6
6
  "pretend": false,
7
7
  "quiet": false,
8
8
  "skip": false,
9
- "ruby": "/Users/davidcruwys/.asdf/installs/ruby/2.7.6/bin/ruby",
10
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/bundler_audit/_.rb",
9
+ "ruby": "/Users/davidcruwys/.asdf/installs/ruby/3.1.1/bin/ruby",
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,21 +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
- "add_bundler_audit": true,
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
- "add_faker": false,
55
+ "add_faker": true,
56
56
  "add_groupdate": false,
57
57
  "add_hexapdf": false,
58
58
  "add_httparty": false,
59
59
  "add_honeybadger": false,
60
+ "add_image_processing": true,
61
+ "add_kaminari": false,
60
62
  "add_lograge": false,
61
63
  "add_minimal_css": true,
62
64
  "minimal_css_library": "water.css",
@@ -66,9 +68,10 @@
66
68
  "add_pretender": false,
67
69
  "add_public_suffix": false,
68
70
  "add_rails_html_sanitizer": false,
71
+ "add_ransack": true,
69
72
  "add_redcarpet": false,
70
73
  "add_rolify": false,
71
- "add_rubocop": false,
74
+ "add_rubocop": true,
72
75
  "add_twilio_ruby": false
73
76
  }
74
77
  }
@@ -9,6 +9,14 @@ module RailsAppGenerator
9
9
 
10
10
  def apply
11
11
  # copy_file 'config/initializers/avo.rb'
12
+
13
+ generate('avo:install')
14
+
15
+ gsub_file 'config/routes.rb', %(mount Avo::Engine, at: Avo.configuration.root_path), <<-RUBY
16
+ authenticate :user do
17
+ mount Avo::Engine, at: Avo.configuration.root_path
18
+ end
19
+ RUBY
12
20
  end
13
21
 
14
22
  def before_template
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ # Custom add-ons for RailsAppGenerator
5
+ module AddOns
6
+ # Add ImageProcessing to rails application
7
+ class ImageProcessing < RailsAppGenerator::Addon
8
+ required_gem gem.version('image_processing', '1.12.2', '')
9
+
10
+ def apply
11
+ say 'Setting up ImageProcessing'
12
+ end
13
+
14
+ def before_template; end
15
+
16
+ def before_bundle; end
17
+
18
+ def after_bundle; end
19
+ end
20
+ end
21
+ end
@@ -8,14 +8,8 @@ module RailsAppGenerator
8
8
  required_gem gem.version('kaminari', '1.2.2', 'Easily add pagination to your Ruby web apps')
9
9
 
10
10
  def apply
11
- say 'Setting up Kaminari'
11
+ generate('kaminari:config')
12
12
  end
13
-
14
- def before_template; end
15
-
16
- def before_bundle; end
17
-
18
- def after_bundle; end
19
13
  end
20
14
  end
21
15
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ # Custom add-ons for RailsAppGenerator
5
+ module AddOns
6
+ # Add Ransack to rails application
7
+ class Ransack < RailsAppGenerator::Addon
8
+ required_gem gem.version('ransack', '3.2.1', 'Object-based searching.')
9
+
10
+ def apply
11
+ say 'Setting up Ransack'
12
+ # template('ransack_template.rb', 'target/ransack.rb', force: true)
13
+ # template('app/javascript/stylesheets/components.scss')
14
+ # create_file('target/ransack.rb', 'put your content here')
15
+ # directory 'app/template', 'app/target', force: true
16
+ # empty_directory 'app/target'
17
+ # inject_into_file('app/application.js', "some content")
18
+ # rails_command('tailwindcss:install')
19
+ end
20
+
21
+ def before_template
22
+ say 'Setting up Ransack - before custom template'
23
+ end
24
+
25
+ def before_bundle
26
+ say 'Setting up Ransack - before bundle install'
27
+ end
28
+
29
+ def after_bundle
30
+ say 'Setting up Ransack - after bundle install'
31
+ end
32
+ end
33
+ end
34
+ end
@@ -167,6 +167,7 @@ module RailsAppGenerator
167
167
  def finish_template
168
168
  puts 'finish template'
169
169
 
170
+ # https://github.com/AaronLasseigne/active_interaction
170
171
  add_if(:acts_as_list) # tested
171
172
  add_if(:administrate) # tested
172
173
  add_if(:annotate) # tested
@@ -190,6 +191,8 @@ module RailsAppGenerator
190
191
  add_if(:httparty) # tested
191
192
  add_if(:high_voltage) # TODO: needs testing
192
193
  add_if(:honeybadger) # tested
194
+ add_if(:image_processing) # TODO: needs testing
195
+ # https://github.com/collectiveidea/interactor
193
196
  add_if(:kaminari) # tested
194
197
  add_if(:lograge) # tested
195
198
  add_if(:minimal_css) # tested (this is NOT a GEM)
@@ -206,6 +209,7 @@ module RailsAppGenerator
206
209
  add_if(:services) # TODO: needs testing
207
210
  add_if(:shoulda) # TODO: needs testing
208
211
  add_if(:sidekiq) # TODO: needs testing
212
+ add_if(:ransack) # TODO: needs testing
209
213
  add_if(:rubocop) # tested
210
214
  add_if(:twilio_ruby) # tested
211
215
  add(:views, :errors, :scaffold) if active?(:views)
@@ -269,6 +273,10 @@ module RailsAppGenerator
269
273
  generate(:scaffold, name, *args)
270
274
  end
271
275
 
276
+ def add_scaffold_controller(name, *args)
277
+ generate(:scaffold_controller, name, *args)
278
+ end
279
+
272
280
  def add_migration(name, *args)
273
281
  generate(:migration, name, *args)
274
282
  end
@@ -125,6 +125,7 @@ KConfig.configure do |config|
125
125
  rag.add_option :add_httparty , type: :boolean, default: false
126
126
  # high_voltage
127
127
  rag.add_option :add_honeybadger , type: :boolean, default: false
128
+ rag.add_option :add_image_processing , type: :boolean, default: false
128
129
  rag.add_option :add_kaminari , type: :boolean, default: false
129
130
  rag.add_option :add_lograge , type: :boolean, default: false
130
131
  rag.add_option :add_minimal_css , type: :boolean, default: false
@@ -137,7 +138,7 @@ KConfig.configure do |config|
137
138
  # pundit
138
139
  rag.add_option :add_rails_html_sanitizer , type: :boolean, default: false
139
140
  # rails_app_generator
140
- # RANSACK
141
+ rag.add_option :add_ransack , type: :boolean, default: false
141
142
  rag.add_option :add_redcarpet , type: :boolean, default: false
142
143
  rag.add_option :add_rolify , type: :boolean, default: false
143
144
  # services
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.2.33'
4
+ VERSION = '0.2.36'
5
5
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.2.33",
3
+ "version": "0.2.36",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.2.33",
9
+ "version": "0.2.36",
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.33",
3
+ "version": "0.2.36",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -6,11 +6,14 @@
6
6
  "opts": {
7
7
  "skip_git": true,
8
8
  "skip_test": true,
9
+ "add_minimal_css": true,
9
10
  "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/avo/_.rb",
10
11
  "add_annotate": true,
11
12
  "add_avo": true,
12
13
  "add_devise": true,
13
14
  "add_faker": true,
15
+ "add_image_processing": true,
16
+ "add_ransack": true,
14
17
  "add_rubocop": true
15
18
  }
16
19
  }
@@ -8,6 +8,7 @@
8
8
  "skip_test": true,
9
9
  "add_minimal_css": true,
10
10
  "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/kaminari/_.rb",
11
+ "add_faker": true,
11
12
  "add_kaminari": true
12
13
  }
13
14
  }
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.33
4
+ version: 0.2.36
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-19 00:00:00.000000000 Z
11
+ date: 2022-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootsnap
@@ -207,11 +207,20 @@ files:
207
207
  - after_templates/addons/annotate/app/views/layouts/_navbar.html.erb
208
208
  - after_templates/addons/annotate/app/views/layouts/application.html.erb
209
209
  - after_templates/addons/avo/_.rb
210
+ - after_templates/addons/avo/app/avo/dashboards/dashboard.rb
211
+ - after_templates/addons/avo/app/avo/resources/category_resource.rb
212
+ - after_templates/addons/avo/app/avo/resources/post_resource.rb
213
+ - after_templates/addons/avo/app/avo/resources/user_resource.rb
210
214
  - after_templates/addons/avo/app/controllers/home_controller.rb
215
+ - after_templates/addons/avo/app/models/category.rb
216
+ - after_templates/addons/avo/app/models/post.rb
211
217
  - after_templates/addons/avo/app/views/home/index.html.erb
218
+ - after_templates/addons/avo/app/views/home/quick_signin.html.erb
212
219
  - after_templates/addons/avo/app/views/layouts/_footer.html.erb
213
220
  - after_templates/addons/avo/app/views/layouts/_navbar.html.erb
214
221
  - after_templates/addons/avo/app/views/layouts/application.html.erb
222
+ - after_templates/addons/avo/config/initializers/avo.rb
223
+ - after_templates/addons/avo/config/locales/en.yml
215
224
  - after_templates/addons/avo/db/seeds.rb
216
225
  - after_templates/addons/bcrypt/_.rb
217
226
  - after_templates/addons/bcrypt/app/controllers/home_controller.rb
@@ -314,11 +323,15 @@ files:
314
323
  - after_templates/addons/httparty/app/views/layouts/_navbar.html.erb
315
324
  - after_templates/addons/httparty/app/views/layouts/application.html.erb
316
325
  - after_templates/addons/kaminari/_.rb
326
+ - after_templates/addons/kaminari/app/assets/images/kaminari-custom-views-detailed.png
327
+ - after_templates/addons/kaminari/app/assets/images/kaminari-custom-views.png
317
328
  - after_templates/addons/kaminari/app/controllers/home_controller.rb
329
+ - after_templates/addons/kaminari/app/controllers/posts_controller.rb
318
330
  - after_templates/addons/kaminari/app/views/home/index.html.erb
319
331
  - after_templates/addons/kaminari/app/views/layouts/_footer.html.erb
320
332
  - after_templates/addons/kaminari/app/views/layouts/_navbar.html.erb
321
333
  - after_templates/addons/kaminari/app/views/layouts/application.html.erb
334
+ - after_templates/addons/kaminari/app/views/posts/index.html.erb
322
335
  - after_templates/addons/kaminari/db/seeds.rb
323
336
  - after_templates/addons/lograge/_.rb
324
337
  - after_templates/addons/lograge/app/controllers/home_controller.rb
@@ -639,6 +652,7 @@ files:
639
652
  - lib/rails_app_generator/addons/high_voltage.rb
640
653
  - lib/rails_app_generator/addons/honeybadger.rb
641
654
  - lib/rails_app_generator/addons/httparty.rb
655
+ - lib/rails_app_generator/addons/image_processing.rb
642
656
  - lib/rails_app_generator/addons/inline_svg.rb
643
657
  - lib/rails_app_generator/addons/irbrc.rb
644
658
  - lib/rails_app_generator/addons/kaminari.rb
@@ -651,6 +665,7 @@ files:
651
665
  - lib/rails_app_generator/addons/public_suffix.rb
652
666
  - lib/rails_app_generator/addons/pundit.rb
653
667
  - lib/rails_app_generator/addons/rails_html_sanitizer.rb
668
+ - lib/rails_app_generator/addons/ransack.rb
654
669
  - lib/rails_app_generator/addons/redcarpet.rb
655
670
  - lib/rails_app_generator/addons/rolify.rb
656
671
  - lib/rails_app_generator/addons/rspec.rb