rails_app_generator 0.2.10 → 0.2.13

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