rails_app_generator 0.2.10 → 0.2.13

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/after_templates/addons/administrate/_.rb +45 -0
  4. data/after_templates/addons/administrate/app/controllers/home_controller.rb +4 -0
  5. data/after_templates/addons/administrate/app/dashboards/author_dashboard.rb +74 -0
  6. data/after_templates/addons/administrate/app/dashboards/post_dashboard.rb +74 -0
  7. data/after_templates/addons/administrate/app/dashboards/product_dashboard.rb +71 -0
  8. data/after_templates/addons/administrate/app/models/author.rb +6 -0
  9. data/after_templates/addons/administrate/app/models/post.rb +5 -0
  10. data/after_templates/addons/administrate/app/views/home/index.html.erb +3 -0
  11. data/after_templates/addons/administrate/app/views/layouts/_footer.html.erb +3 -0
  12. data/after_templates/addons/administrate/app/views/layouts/_navbar.html.erb +8 -0
  13. data/after_templates/addons/administrate/app/views/layouts/application.html.erb +23 -0
  14. data/after_templates/addons/administrate/db/seeds.rb +116 -0
  15. data/after_templates/addons/motor_admin/_.rb +47 -0
  16. data/after_templates/addons/motor_admin/app/controllers/home_controller.rb +4 -0
  17. data/after_templates/addons/motor_admin/app/views/home/index.html.erb +3 -0
  18. data/after_templates/addons/motor_admin/app/views/layouts/_footer.html.erb +3 -0
  19. data/after_templates/addons/motor_admin/app/views/layouts/_navbar.html.erb +8 -0
  20. data/after_templates/addons/motor_admin/app/views/layouts/application.html.erb +23 -0
  21. data/after_templates/addons/motor_admin/db/seeds.rb +116 -0
  22. data/docs/last_run/app_generator_class.json +16 -0
  23. data/docs/last_run/app_generator_data.json +7 -5
  24. data/docs/last_run/rails_options_class.json +16 -0
  25. data/docs/last_run/rails_options_data.json +7 -5
  26. data/lib/rails_app_generator/addons/motor_admin.rb +23 -0
  27. data/lib/rails_app_generator/rag_initializer.rb +1 -0
  28. data/lib/rails_app_generator/version.rb +1 -1
  29. data/package-lock.json +2 -2
  30. data/package.json +1 -1
  31. data/profiles/addons/administrate.json +15 -0
  32. data/profiles/addons/motor_admin.json +15 -0
  33. data/templates/thor_task/profile/app/views/home/index.html.erb.tt +1 -1
  34. metadata +24 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e595153d8d04b113b8c54db0d8571752deaa017ae6b0cdefa401999ea85d9853
4
- data.tar.gz: 36fec67777c02fb9c6f7d9c1fe3fd2dd84e67404b52b19bfffef13e9d09e20a1
3
+ metadata.gz: 9347a3a750b1d75294e58ee69b709776cc21ca6108a5b80409a7586f505f5cfe
4
+ data.tar.gz: fadce854770396d97819b5bcb589ad3e5ac154532889b177e1a0155661592ed1
5
5
  SHA512:
6
- metadata.gz: bba13cc58a961de6af36ce8f7bd4f1d42bb3457c63a9f5cec283bd1cea7fda8f1ab6d8e30eb6a216653a986aadd4b4dd0b74964c7952001523bbc624844ff4cc
7
- data.tar.gz: ebe4c29f6d73c47de6568a2687bedd9648fc828e29befe7481517af22e7d07417ef715b4b578d9fd527d215e32b4ca94439c154b170ddb366cb7b70beb412ef1
6
+ metadata.gz: ca788fcd71b5085efa9e49dcfacecc27e2d9a9e5bbdbb78d2cc0aa2b607bfbca3b28f92fd41b8c12d1e01c1c34ea38f777e888383ebdd9d746cc3f2e9b472626
7
+ data.tar.gz: e9ab3c2054c677c2e0977134e4105571d202677377dc579a480829989f47719f6ee170fe365fa8376c4aba5a67d87837b54da68ce8a26d413ba92e0b20e57c21
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## [0.2.12](https://github.com/klueless-io/rails_app_generator/compare/v0.2.11...v0.2.12) (2022-08-12)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add motor-admin profile ([0e41a1e](https://github.com/klueless-io/rails_app_generator/commit/0e41a1ece000a1b818d5756aabbd14d52788b462))
7
+
8
+ ## [0.2.11](https://github.com/klueless-io/rails_app_generator/compare/v0.2.10...v0.2.11) (2022-08-12)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * add administrate profile ([4049add](https://github.com/klueless-io/rails_app_generator/commit/4049add2e8b4ccf840daa22a817a454cb8bf2ab0))
14
+
15
+ ## [0.2.10](https://github.com/klueless-io/rails_app_generator/compare/v0.2.9...v0.2.10) (2022-08-11)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * add administrate addon ([330ce3c](https://github.com/klueless-io/rails_app_generator/commit/330ce3c0db2148ccb34585eb7fb45dae8b267884))
21
+
1
22
  ## [0.2.9](https://github.com/klueless-io/rails_app_generator/compare/v0.2.8...v0.2.9) (2022-08-11)
2
23
 
3
24
 
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Administrate is inspired by Rails Admin and ActiveAdmin, but aims to provide a better developer/user experience.
4
+ #
5
+ # exe/rag addons/administrate
6
+
7
+ self.local_template_path = File.dirname(__FILE__)
8
+
9
+ gac 'base rails 7 image created'
10
+
11
+ bundle_install
12
+
13
+ add_controller('home', 'index')
14
+
15
+ route("root 'home#index'")
16
+
17
+ force_copy
18
+
19
+ directory "app/controllers"
20
+ directory "app/views/home"
21
+ directory "app/views/layouts"
22
+ template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
23
+
24
+ template 'db/seeds.rb' , 'db/seeds.rb'
25
+
26
+ after_bundle do
27
+ setup_db
28
+
29
+ generate('administrate:install')
30
+
31
+ directory "app/dashboards"
32
+
33
+ rubocop
34
+ end
35
+
36
+ def setup_db
37
+ add_scaffold('author', 'name:string email:string bio:text')
38
+ add_scaffold('post', 'title:string content:text published:boolean author:references')
39
+ add_scaffold('product', 'name', 'quantity:integer', 'price:decimal')
40
+
41
+ directory "app/models"
42
+
43
+ db_migrate
44
+ db_seed
45
+ end
@@ -0,0 +1,4 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ end
4
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'administrate/base_dashboard'
4
+
5
+ class AuthorDashboard < Administrate::BaseDashboard
6
+ # ATTRIBUTE_TYPES
7
+ # a hash that describes the type of each of the model's fields.
8
+ #
9
+ # Each different type represents an Administrate::Field object,
10
+ # which determines how the attribute is displayed
11
+ # on pages throughout the dashboard.
12
+ ATTRIBUTE_TYPES = {
13
+ id: Field::Number,
14
+ name: Field::String,
15
+ email: Field::String,
16
+ bio: Field::Text,
17
+ posts: Field::HasMany,
18
+ created_at: Field::DateTime,
19
+ updated_at: Field::DateTime
20
+ }.freeze
21
+
22
+ # COLLECTION_ATTRIBUTES
23
+ # an array of attributes that will be displayed on the model's index page.
24
+ #
25
+ # By default, it's limited to four items to reduce clutter on index pages.
26
+ # Feel free to add, remove, or rearrange items.
27
+ COLLECTION_ATTRIBUTES = %i[
28
+ id
29
+ name
30
+ email
31
+ posts
32
+ ].freeze
33
+
34
+ # SHOW_PAGE_ATTRIBUTES
35
+ # an array of attributes that will be displayed on the model's show page.
36
+ SHOW_PAGE_ATTRIBUTES = %i[
37
+ id
38
+ name
39
+ email
40
+ bio
41
+ posts
42
+ created_at
43
+ updated_at
44
+ ].freeze
45
+
46
+ # FORM_ATTRIBUTES
47
+ # an array of attributes that will be displayed
48
+ # on the model's form (`new` and `edit`) pages.
49
+ FORM_ATTRIBUTES = %i[
50
+ name
51
+ email
52
+ bio
53
+ posts
54
+ ].freeze
55
+
56
+ # COLLECTION_FILTERS
57
+ # a hash that defines filters that can be used while searching via the search
58
+ # field of the dashboard.
59
+ #
60
+ # For example to add an option to search for open resources by typing "open:"
61
+ # in the search field:
62
+ #
63
+ # COLLECTION_FILTERS = {
64
+ # open: ->(resources) { resources.where(open: true) }
65
+ # }.freeze
66
+ COLLECTION_FILTERS = {}.freeze
67
+
68
+ # Overwrite this method to customize how authors are displayed
69
+ # across all pages of the admin dashboard.
70
+ #
71
+ # def display_resource(author)
72
+ # "Author ##{author.id}"
73
+ # end
74
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'administrate/base_dashboard'
4
+
5
+ class PostDashboard < Administrate::BaseDashboard
6
+ # ATTRIBUTE_TYPES
7
+ # a hash that describes the type of each of the model's fields.
8
+ #
9
+ # Each different type represents an Administrate::Field object,
10
+ # which determines how the attribute is displayed
11
+ # on pages throughout the dashboard.
12
+ ATTRIBUTE_TYPES = {
13
+ author: Field::BelongsTo,
14
+ id: Field::Number,
15
+ title: Field::String,
16
+ content: Field::Text,
17
+ published: Field::Boolean,
18
+ created_at: Field::DateTime,
19
+ updated_at: Field::DateTime
20
+ }.freeze
21
+
22
+ # COLLECTION_ATTRIBUTES
23
+ # an array of attributes that will be displayed on the model's index page.
24
+ #
25
+ # By default, it's limited to four items to reduce clutter on index pages.
26
+ # Feel free to add, remove, or rearrange items.
27
+ COLLECTION_ATTRIBUTES = %i[
28
+ author
29
+ id
30
+ title
31
+ content
32
+ ].freeze
33
+
34
+ # SHOW_PAGE_ATTRIBUTES
35
+ # an array of attributes that will be displayed on the model's show page.
36
+ SHOW_PAGE_ATTRIBUTES = %i[
37
+ author
38
+ id
39
+ title
40
+ content
41
+ published
42
+ created_at
43
+ updated_at
44
+ ].freeze
45
+
46
+ # FORM_ATTRIBUTES
47
+ # an array of attributes that will be displayed
48
+ # on the model's form (`new` and `edit`) pages.
49
+ FORM_ATTRIBUTES = %i[
50
+ author
51
+ title
52
+ content
53
+ published
54
+ ].freeze
55
+
56
+ # COLLECTION_FILTERS
57
+ # a hash that defines filters that can be used while searching via the search
58
+ # field of the dashboard.
59
+ #
60
+ # For example to add an option to search for open resources by typing "open:"
61
+ # in the search field:
62
+ #
63
+ # COLLECTION_FILTERS = {
64
+ # open: ->(resources) { resources.where(open: true) }
65
+ # }.freeze
66
+ COLLECTION_FILTERS = {}.freeze
67
+
68
+ # Overwrite this method to customize how posts are displayed
69
+ # across all pages of the admin dashboard.
70
+ #
71
+ # def display_resource(post)
72
+ # "Post ##{post.id}"
73
+ # end
74
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'administrate/base_dashboard'
4
+
5
+ class ProductDashboard < Administrate::BaseDashboard
6
+ # ATTRIBUTE_TYPES
7
+ # a hash that describes the type of each of the model's fields.
8
+ #
9
+ # Each different type represents an Administrate::Field object,
10
+ # which determines how the attribute is displayed
11
+ # on pages throughout the dashboard.
12
+ ATTRIBUTE_TYPES = {
13
+ id: Field::Number,
14
+ name: Field::String,
15
+ quantity: Field::Number,
16
+ price: Field::String.with_options(searchable: false),
17
+ created_at: Field::DateTime,
18
+ updated_at: Field::DateTime
19
+ }.freeze
20
+
21
+ # COLLECTION_ATTRIBUTES
22
+ # an array of attributes that will be displayed on the model's index page.
23
+ #
24
+ # By default, it's limited to four items to reduce clutter on index pages.
25
+ # Feel free to add, remove, or rearrange items.
26
+ COLLECTION_ATTRIBUTES = %i[
27
+ id
28
+ name
29
+ quantity
30
+ price
31
+ ].freeze
32
+
33
+ # SHOW_PAGE_ATTRIBUTES
34
+ # an array of attributes that will be displayed on the model's show page.
35
+ SHOW_PAGE_ATTRIBUTES = %i[
36
+ id
37
+ name
38
+ quantity
39
+ price
40
+ created_at
41
+ updated_at
42
+ ].freeze
43
+
44
+ # FORM_ATTRIBUTES
45
+ # an array of attributes that will be displayed
46
+ # on the model's form (`new` and `edit`) pages.
47
+ FORM_ATTRIBUTES = %i[
48
+ name
49
+ quantity
50
+ price
51
+ ].freeze
52
+
53
+ # COLLECTION_FILTERS
54
+ # a hash that defines filters that can be used while searching via the search
55
+ # field of the dashboard.
56
+ #
57
+ # For example to add an option to search for open resources by typing "open:"
58
+ # in the search field:
59
+ #
60
+ # COLLECTION_FILTERS = {
61
+ # open: ->(resources) { resources.where(open: true) }
62
+ # }.freeze
63
+ COLLECTION_FILTERS = {}.freeze
64
+
65
+ # Overwrite this method to customize how products are displayed
66
+ # across all pages of the admin dashboard.
67
+ #
68
+ # def display_resource(product)
69
+ # "Product ##{product.id}"
70
+ # end
71
+ end
@@ -0,0 +1,6 @@
1
+ class Author < ApplicationRecord
2
+ has_many :posts
3
+
4
+ validates :name, presence: true
5
+ validates :bio, length: { maximum: 100 }
6
+ end
@@ -0,0 +1,5 @@
1
+ class Post < ApplicationRecord
2
+ belongs_to :author, required: true
3
+
4
+ validates :title, presence: true, format: { with: /\A[a-zA-Z &0-9+!]+\z/, message: "only allows letters, numbers plus &!+" }
5
+ end
@@ -0,0 +1,3 @@
1
+ <h1>Administrate</h1>
2
+
3
+ <p>Administrate is inspired by Rails Admin and ActiveAdmin, but aims to provide a better developer/user experience.</p>
@@ -0,0 +1,3 @@
1
+ <footer>
2
+ <hr />
3
+ </footer>
@@ -0,0 +1,8 @@
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', admin_root_path %>
7
+ <hr />
8
+ </header>
@@ -0,0 +1,23 @@
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
+ <%%= render 'layouts/navbar' %>
18
+ <main>
19
+ <%%= yield %>
20
+ </main>
21
+ <%%= render 'layouts/footer' %>
22
+ </body>
23
+ </html>
@@ -0,0 +1,116 @@
1
+ def fake_title
2
+ [
3
+ 'Fundamentals of Wavelets',
4
+ 'Data Smart',
5
+ 'God Created the Integers',
6
+ 'Superfreakonomics',
7
+ 'Orientalism',
8
+ 'Nature of Statistical Learning Theory',
9
+ 'Integration of the Indian States',
10
+ 'Image Processing & Mathematical Morphology',
11
+ 'How to Think Like Sherlock Holmes',
12
+ 'Data Scientists at Work',
13
+ 'Slaughterhouse Five',
14
+ 'Birth of a Theorem',
15
+ 'Structure & Interpretation of Computer Programs',
16
+ 'Age of Wrath',
17
+ 'Trial',
18
+ 'Data Mining Handbook',
19
+ 'New Machiavelli',
20
+ 'Physics & Philosophy',
21
+ 'Making Software',
22
+ 'Analysis',
23
+ 'Machine Learning for Hackers',
24
+ 'Signal and the Noise',
25
+ 'Python for Data Analysis',
26
+ 'Introduction to Algorithms',
27
+ 'Beautiful and the Damned',
28
+ 'Outsider',
29
+ 'Complete Sherlock Holmes',
30
+ 'Complete Sherlock Holmes',
31
+ 'Wealth of Nations',
32
+ 'Pillars of the Earth',
33
+ 'Mein Kampf',
34
+ 'Tao of Physics',
35
+ 'Farewell to Arms',
36
+ 'Veteran',
37
+ 'False Impressions',
38
+ 'Last Lecture',
39
+ 'Return of the Primitive',
40
+ 'Jurassic Park',
41
+ 'Russian Journal',
42
+ 'Tales of Mystery and Imagination',
43
+ 'Freakonomics',
44
+ 'Hidden Connections',
45
+ 'Story of Philosophy',
46
+ 'Asami Asami',
47
+ 'Journal of a Novel',
48
+ 'Once There Was a War',
49
+ 'Moon is Down',
50
+ 'Brethren',
51
+ 'In a Free State',
52
+ 'Catch 22',
53
+ 'Complete Mastermind',
54
+ 'Dylan on Dylan',
55
+ 'Soft Computing & Intelligent Systems',
56
+ 'Textbook of Economic Theory',
57
+ 'Econometric Analysis',
58
+ 'Learning OpenCV',
59
+ 'Data Structures Using C & C++',
60
+ 'Computer Vision',
61
+ 'Principles of Communication Systems',
62
+ 'Let Us C',
63
+ 'Amulet of Samarkand',
64
+ 'Crime and Punishment',
65
+ 'Angels & Demons',
66
+ 'Argumentative Indian',
67
+ 'Sea of Poppies',
68
+ 'Idea of Justice',
69
+ 'Raisin in the Sun',
70
+ 'Prisoner of Birth',
71
+ 'Scoop!',
72
+ 'Ahe Manohar Tari',
73
+ 'Last Mughal',
74
+ 'Social Choice & Welfare',
75
+ 'Radiowaril Bhashane & Shrutika',
76
+ 'Gun Gayin Awadi',
77
+ 'Aghal Paghal',
78
+ 'Beyond Degrees',
79
+ 'Manasa',
80
+ 'India from Midnight to Milennium',
81
+ 'Great Indian Novel',
82
+ 'O Jerusalem!',
83
+ 'City of Joy',
84
+ 'Freedom at Midnight',
85
+ 'Winter of Our Discontent',
86
+ 'On Education',
87
+ 'Free Will',
88
+ 'Bookless in Baghdad',
89
+ 'Case of the Lame Canary',
90
+ 'Theory of Everything',
91
+ 'New Markets & Other Essays',
92
+ 'Electric Universe',
93
+ 'Hunchback of Notre Dame',
94
+ 'Burning Bright',
95
+ 'Age of Discontuinity'
96
+ ].sample
97
+ end
98
+
99
+ 60.times do
100
+ Author.create!(name: Faker::Name.name, bio: Faker::Lorem.words(number: 5).join(' '), email: Faker::Internet.email)
101
+ end
102
+
103
+ 100.times do |i|
104
+ Post.create!(title: fake_title,
105
+ content: "This is the body of post #{i}",
106
+ published: Faker::Boolean.boolean(true_ratio: 0.6),
107
+ author: Author.all.sample)
108
+ end
109
+
110
+ 200.times do
111
+ Product.create!(
112
+ name: Faker::Name.name,
113
+ quantity: Faker::Number.number(digits: 2),
114
+ price: Faker::Number.decimal(l_digits: 4)
115
+ )
116
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Motor Admin allows to create a flexible admin panel while writing less code.
4
+ #
5
+ # exe/rag addons/motor_admin
6
+
7
+ self.local_template_path = File.dirname(__FILE__)
8
+
9
+ gac 'base rails 7 image created'
10
+
11
+ bundle_install
12
+
13
+ add_controller('home', 'index')
14
+
15
+ route("root 'home#index'")
16
+
17
+ force_copy
18
+
19
+ directory "app/controllers"
20
+ directory "app/views/home"
21
+ directory "app/views/layouts"
22
+ template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
23
+
24
+ template 'db/seeds.rb' , 'db/seeds.rb'
25
+
26
+ after_bundle do
27
+ setup_db
28
+
29
+ generate('motor:install')
30
+ db_migrate
31
+ # generate('administrate:install')
32
+
33
+ # directory "app/dashboards"
34
+
35
+ rubocop
36
+ end
37
+
38
+ def setup_db
39
+ add_scaffold('author', 'name:string email:string bio:text')
40
+ add_scaffold('post', 'title:string content:text published:boolean author:references')
41
+ add_scaffold('product', 'name', 'quantity:integer', 'price:decimal')
42
+
43
+ directory "app/models"
44
+
45
+ db_migrate
46
+ db_seed
47
+ end
@@ -0,0 +1,4 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ <h1>Motor admin</h1>
2
+
3
+ <p>Motor Admin allows to create a flexible admin panel while writing less code.</p>
@@ -0,0 +1,3 @@
1
+ <footer>
2
+ <hr />
3
+ </footer>
@@ -0,0 +1,8 @@
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', motor_admin_path %>
7
+ <hr />
8
+ </header>
@@ -0,0 +1,23 @@
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
+ <%%= render 'layouts/navbar' %>
18
+ <main>
19
+ <%%= yield %>
20
+ </main>
21
+ <%%= render 'layouts/footer' %>
22
+ </body>
23
+ </html>
@@ -0,0 +1,116 @@
1
+ def fake_title
2
+ [
3
+ 'Fundamentals of Wavelets',
4
+ 'Data Smart',
5
+ 'God Created the Integers',
6
+ 'Superfreakonomics',
7
+ 'Orientalism',
8
+ 'Nature of Statistical Learning Theory',
9
+ 'Integration of the Indian States',
10
+ 'Image Processing & Mathematical Morphology',
11
+ 'How to Think Like Sherlock Holmes',
12
+ 'Data Scientists at Work',
13
+ 'Slaughterhouse Five',
14
+ 'Birth of a Theorem',
15
+ 'Structure & Interpretation of Computer Programs',
16
+ 'Age of Wrath',
17
+ 'Trial',
18
+ 'Data Mining Handbook',
19
+ 'New Machiavelli',
20
+ 'Physics & Philosophy',
21
+ 'Making Software',
22
+ 'Analysis',
23
+ 'Machine Learning for Hackers',
24
+ 'Signal and the Noise',
25
+ 'Python for Data Analysis',
26
+ 'Introduction to Algorithms',
27
+ 'Beautiful and the Damned',
28
+ 'Outsider',
29
+ 'Complete Sherlock Holmes',
30
+ 'Complete Sherlock Holmes',
31
+ 'Wealth of Nations',
32
+ 'Pillars of the Earth',
33
+ 'Mein Kampf',
34
+ 'Tao of Physics',
35
+ 'Farewell to Arms',
36
+ 'Veteran',
37
+ 'False Impressions',
38
+ 'Last Lecture',
39
+ 'Return of the Primitive',
40
+ 'Jurassic Park',
41
+ 'Russian Journal',
42
+ 'Tales of Mystery and Imagination',
43
+ 'Freakonomics',
44
+ 'Hidden Connections',
45
+ 'Story of Philosophy',
46
+ 'Asami Asami',
47
+ 'Journal of a Novel',
48
+ 'Once There Was a War',
49
+ 'Moon is Down',
50
+ 'Brethren',
51
+ 'In a Free State',
52
+ 'Catch 22',
53
+ 'Complete Mastermind',
54
+ 'Dylan on Dylan',
55
+ 'Soft Computing & Intelligent Systems',
56
+ 'Textbook of Economic Theory',
57
+ 'Econometric Analysis',
58
+ 'Learning OpenCV',
59
+ 'Data Structures Using C & C++',
60
+ 'Computer Vision',
61
+ 'Principles of Communication Systems',
62
+ 'Let Us C',
63
+ 'Amulet of Samarkand',
64
+ 'Crime and Punishment',
65
+ 'Angels & Demons',
66
+ 'Argumentative Indian',
67
+ 'Sea of Poppies',
68
+ 'Idea of Justice',
69
+ 'Raisin in the Sun',
70
+ 'Prisoner of Birth',
71
+ 'Scoop!',
72
+ 'Ahe Manohar Tari',
73
+ 'Last Mughal',
74
+ 'Social Choice & Welfare',
75
+ 'Radiowaril Bhashane & Shrutika',
76
+ 'Gun Gayin Awadi',
77
+ 'Aghal Paghal',
78
+ 'Beyond Degrees',
79
+ 'Manasa',
80
+ 'India from Midnight to Milennium',
81
+ 'Great Indian Novel',
82
+ 'O Jerusalem!',
83
+ 'City of Joy',
84
+ 'Freedom at Midnight',
85
+ 'Winter of Our Discontent',
86
+ 'On Education',
87
+ 'Free Will',
88
+ 'Bookless in Baghdad',
89
+ 'Case of the Lame Canary',
90
+ 'Theory of Everything',
91
+ 'New Markets & Other Essays',
92
+ 'Electric Universe',
93
+ 'Hunchback of Notre Dame',
94
+ 'Burning Bright',
95
+ 'Age of Discontuinity'
96
+ ].sample
97
+ end
98
+
99
+ 60.times do
100
+ Author.create!(name: Faker::Name.name, bio: Faker::Lorem.words(number: 5).join(' '), email: Faker::Internet.email)
101
+ end
102
+
103
+ 100.times do |i|
104
+ Post.create!(title: fake_title,
105
+ content: "This is the body of post #{i}",
106
+ published: Faker::Boolean.boolean(true_ratio: 0.6),
107
+ author: Author.all.sample)
108
+ end
109
+
110
+ 200.times do
111
+ Product.create!(
112
+ name: Faker::Name.name,
113
+ quantity: Faker::Number.number(digits: 2),
114
+ price: Faker::Number.decimal(l_digits: 4)
115
+ )
116
+ end
@@ -46,6 +46,7 @@
46
46
  "add_annotate",
47
47
  "add_lograge",
48
48
  "add_acts_as_list",
49
+ "add_administrate",
49
50
  "add_browser",
50
51
  "add_bcrypt_ruby",
51
52
  "add_chartkick",
@@ -55,6 +56,7 @@
55
56
  "add_httparty",
56
57
  "add_honeybadger",
57
58
  "add_mini_magick",
59
+ "add_motor_admin",
58
60
  "add_phony_rails",
59
61
  "add_public_suffix",
60
62
  "add_rails_html_sanitizer",
@@ -384,6 +386,13 @@
384
386
  "default": false,
385
387
  "required": false
386
388
  },
389
+ {
390
+ "name": "add_administrate",
391
+ "description": "Indicates when to generate add administrate",
392
+ "type": "boolean",
393
+ "default": false,
394
+ "required": false
395
+ },
387
396
  {
388
397
  "name": "add_browser",
389
398
  "description": "Indicates when to generate add browser",
@@ -447,6 +456,13 @@
447
456
  "default": false,
448
457
  "required": false
449
458
  },
459
+ {
460
+ "name": "add_motor_admin",
461
+ "description": "Indicates when to generate add motor admin",
462
+ "type": "boolean",
463
+ "default": false,
464
+ "required": false
465
+ },
450
466
  {
451
467
  "name": "add_phony_rails",
452
468
  "description": "Indicates when to generate add phony rails",
@@ -32,24 +32,26 @@
32
32
  "test": "rspec",
33
33
  "add_devise": false,
34
34
  "add_dotenv": false,
35
- "add_rubocop": false,
36
- "add_annotate": false,
35
+ "add_rubocop": true,
36
+ "add_annotate": true,
37
37
  "add_lograge": false,
38
38
  "add_acts_as_list": false,
39
+ "add_administrate": false,
39
40
  "add_browser": false,
40
41
  "add_bcrypt_ruby": false,
41
42
  "add_chartkick": false,
42
- "add_faker": false,
43
+ "add_faker": true,
43
44
  "add_groupdate": false,
44
45
  "add_hexapdf": false,
45
46
  "add_httparty": false,
46
47
  "add_honeybadger": false,
47
48
  "add_mini_magick": false,
49
+ "add_motor_admin": true,
48
50
  "add_phony_rails": false,
49
51
  "add_public_suffix": false,
50
52
  "add_rails_html_sanitizer": false,
51
- "add_redcarpet": true,
53
+ "add_redcarpet": false,
52
54
  "add_twilio_ruby": false,
53
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/redcarpet/_.rb"
55
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/motor_admin/_.rb"
54
56
  }
55
57
  }
@@ -46,6 +46,7 @@
46
46
  "add_annotate",
47
47
  "add_lograge",
48
48
  "add_acts_as_list",
49
+ "add_administrate",
49
50
  "add_browser",
50
51
  "add_bcrypt_ruby",
51
52
  "add_chartkick",
@@ -55,6 +56,7 @@
55
56
  "add_httparty",
56
57
  "add_honeybadger",
57
58
  "add_mini_magick",
59
+ "add_motor_admin",
58
60
  "add_phony_rails",
59
61
  "add_public_suffix",
60
62
  "add_rails_html_sanitizer",
@@ -384,6 +386,13 @@
384
386
  "default": false,
385
387
  "required": false
386
388
  },
389
+ {
390
+ "name": "add_administrate",
391
+ "description": "",
392
+ "type": "boolean",
393
+ "default": false,
394
+ "required": false
395
+ },
387
396
  {
388
397
  "name": "add_browser",
389
398
  "description": "",
@@ -447,6 +456,13 @@
447
456
  "default": false,
448
457
  "required": false
449
458
  },
459
+ {
460
+ "name": "add_motor_admin",
461
+ "description": "",
462
+ "type": "boolean",
463
+ "default": false,
464
+ "required": false
465
+ },
450
466
  {
451
467
  "name": "add_phony_rails",
452
468
  "description": "",
@@ -7,7 +7,7 @@
7
7
  "quiet": false,
8
8
  "skip": false,
9
9
  "ruby": "/Users/davidcruwys/.asdf/installs/ruby/2.7.6/bin/ruby",
10
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/redcarpet/_.rb",
10
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/motor_admin/_.rb",
11
11
  "database": "sqlite3",
12
12
  "skip_git": true,
13
13
  "skip_keeps": false,
@@ -42,23 +42,25 @@
42
42
  "test": "rspec",
43
43
  "add_devise": false,
44
44
  "add_dotenv": false,
45
- "add_rubocop": false,
46
- "add_annotate": false,
45
+ "add_rubocop": true,
46
+ "add_annotate": true,
47
47
  "add_lograge": false,
48
48
  "add_acts_as_list": false,
49
+ "add_administrate": false,
49
50
  "add_browser": false,
50
51
  "add_bcrypt_ruby": false,
51
52
  "add_chartkick": false,
52
- "add_faker": false,
53
+ "add_faker": true,
53
54
  "add_groupdate": false,
54
55
  "add_hexapdf": false,
55
56
  "add_httparty": false,
56
57
  "add_honeybadger": false,
57
58
  "add_mini_magick": false,
59
+ "add_motor_admin": true,
58
60
  "add_phony_rails": false,
59
61
  "add_public_suffix": false,
60
62
  "add_rails_html_sanitizer": false,
61
- "add_redcarpet": true,
63
+ "add_redcarpet": false,
62
64
  "add_twilio_ruby": false
63
65
  }
64
66
  }
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ # Custom add-ons for RailsAppGenerator
5
+ module AddOns
6
+ # Add MotorAdmin to rails application
7
+ class MotorAdmin < RailsAppGenerator::Addon
8
+ required_gem gem.version('motor-admin', '0.3.6', 'Motor Admin allows to create a flexible admin panel while writing less code.')
9
+
10
+ def apply
11
+ say 'Setting up MotorAdmin'
12
+ end
13
+
14
+ def before_bundle
15
+ say 'Setting up MotorAdmin - before bundle install'
16
+ end
17
+
18
+ def after_bundle
19
+ say 'Setting up MotorAdmin - after bundle install'
20
+ end
21
+ end
22
+ end
23
+ end
@@ -117,6 +117,7 @@ KConfig.configure do |config|
117
117
  rag.add_option :add_httparty , type: :boolean, default: false
118
118
  rag.add_option :add_honeybadger , type: :boolean, default: false
119
119
  rag.add_option :add_mini_magick , type: :boolean, default: false
120
+ rag.add_option :add_motor_admin , type: :boolean, default: false
120
121
  rag.add_option :add_phony_rails , type: :boolean, default: false
121
122
  rag.add_option :add_public_suffix , type: :boolean, default: false
122
123
  rag.add_option :add_rails_html_sanitizer , type: :boolean, default: false
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.2.10'
4
+ VERSION = '0.2.13'
5
5
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.2.10",
3
+ "version": "0.2.13",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.2.10",
9
+ "version": "0.2.13",
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.10",
3
+ "version": "0.2.13",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -0,0 +1,15 @@
1
+ {
2
+ "args": {
3
+ "app_path": "administrate",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
5
+ },
6
+ "opts": {
7
+ "skip_git": true,
8
+ "skip_test": true,
9
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/administrate/_.rb",
10
+ "add_annotate": true,
11
+ "add_administrate": true,
12
+ "add_faker": true,
13
+ "add_rubocop": true
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "args": {
3
+ "app_path": "motor_admin",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
5
+ },
6
+ "opts": {
7
+ "skip_git": true,
8
+ "skip_test": true,
9
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/motor_admin/_.rb",
10
+ "add_annotate": true,
11
+ "add_faker": true,
12
+ "add_motor_admin": true,
13
+ "add_rubocop": true
14
+ }
15
+ }
@@ -1,3 +1,3 @@
1
1
  <h1><%= data.name_human %></h1>
2
2
 
3
- <h2><%= data.description %></h2>
3
+ <p><%= data.description %></p>
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.10
4
+ version: 0.2.13
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-11 00:00:00.000000000 Z
11
+ date: 2022-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootsnap
@@ -189,6 +189,18 @@ files:
189
189
  - after_templates/addons/acts_as_list/app/views/todo_items/index.html.erb
190
190
  - after_templates/addons/acts_as_list/config/routes.rb
191
191
  - after_templates/addons/acts_as_list/db/seeds.rb
192
+ - after_templates/addons/administrate/_.rb
193
+ - after_templates/addons/administrate/app/controllers/home_controller.rb
194
+ - after_templates/addons/administrate/app/dashboards/author_dashboard.rb
195
+ - after_templates/addons/administrate/app/dashboards/post_dashboard.rb
196
+ - after_templates/addons/administrate/app/dashboards/product_dashboard.rb
197
+ - after_templates/addons/administrate/app/models/author.rb
198
+ - after_templates/addons/administrate/app/models/post.rb
199
+ - after_templates/addons/administrate/app/views/home/index.html.erb
200
+ - after_templates/addons/administrate/app/views/layouts/_footer.html.erb
201
+ - after_templates/addons/administrate/app/views/layouts/_navbar.html.erb
202
+ - after_templates/addons/administrate/app/views/layouts/application.html.erb
203
+ - after_templates/addons/administrate/db/seeds.rb
192
204
  - after_templates/addons/bcrypt_ruby/_.rb
193
205
  - after_templates/addons/bcrypt_ruby/app/controllers/home_controller.rb
194
206
  - after_templates/addons/bcrypt_ruby/app/models/user.rb
@@ -260,6 +272,13 @@ files:
260
272
  - after_templates/addons/mini_magick/app/views/layouts/_footer.html.erb
261
273
  - after_templates/addons/mini_magick/app/views/layouts/_navbar.html.erb
262
274
  - after_templates/addons/mini_magick/app/views/layouts/application.html.erb
275
+ - after_templates/addons/motor_admin/_.rb
276
+ - after_templates/addons/motor_admin/app/controllers/home_controller.rb
277
+ - after_templates/addons/motor_admin/app/views/home/index.html.erb
278
+ - after_templates/addons/motor_admin/app/views/layouts/_footer.html.erb
279
+ - after_templates/addons/motor_admin/app/views/layouts/_navbar.html.erb
280
+ - after_templates/addons/motor_admin/app/views/layouts/application.html.erb
281
+ - after_templates/addons/motor_admin/db/seeds.rb
263
282
  - after_templates/addons/phony_rails/_.rb
264
283
  - after_templates/addons/phony_rails/app/controllers/home_controller.rb
265
284
  - after_templates/addons/phony_rails/app/views/home/index.html.erb
@@ -509,6 +528,7 @@ files:
509
528
  - lib/rails_app_generator/addons/irbrc.rb
510
529
  - lib/rails_app_generator/addons/lograge.rb
511
530
  - lib/rails_app_generator/addons/mini_magick.rb
531
+ - lib/rails_app_generator/addons/motor_admin.rb
512
532
  - lib/rails_app_generator/addons/phony_rails.rb
513
533
  - lib/rails_app_generator/addons/public_suffix.rb
514
534
  - lib/rails_app_generator/addons/pundit.rb
@@ -559,6 +579,7 @@ files:
559
579
  - package-lock.json
560
580
  - package.json
561
581
  - profiles/addons/acts_as_list.json
582
+ - profiles/addons/administrate.json
562
583
  - profiles/addons/bcrypt_ruby.json
563
584
  - profiles/addons/browser.json
564
585
  - profiles/addons/chartkick.json
@@ -569,6 +590,7 @@ files:
569
590
  - profiles/addons/httparty.json
570
591
  - profiles/addons/lograge.json
571
592
  - profiles/addons/mini_magick.json
593
+ - profiles/addons/motor_admin.json
572
594
  - profiles/addons/phony_rails.json
573
595
  - profiles/addons/public_suffix.json
574
596
  - profiles/addons/rails-html-sanitizer.json