rails_app_generator 0.2.38 → 0.2.41
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/after_templates/addons/avo/_.rb +11 -3
- data/after_templates/addons/avo/app/avo/resources/post_resource.rb +3 -0
- data/after_templates/addons/avo/app/avo/resources/user_resource.rb +1 -0
- data/after_templates/addons/avo/app/controllers/home_controller.rb +4 -0
- data/after_templates/addons/avo/app/models/post.rb +3 -2
- data/after_templates/addons/avo/app/models/user.rb +6 -0
- data/after_templates/addons/avo/app/services/seed_service.rb +9 -0
- data/after_templates/addons/avo/app/views/home/index.html.erb +4 -2
- data/after_templates/addons/avo/app/views/layouts/_navbar.html.erb +7 -1
- data/after_templates/addons/avo/db/seeds.rb +1 -1
- data/after_templates/addons/factory_bot_rails/_.rb +45 -0
- data/after_templates/addons/factory_bot_rails/app/controllers/home_controller.rb +8 -0
- data/after_templates/addons/factory_bot_rails/app/services/seed_service.rb +27 -0
- data/after_templates/addons/factory_bot_rails/app/views/home/index.html.erb +3 -0
- data/after_templates/addons/factory_bot_rails/app/views/home/reseed.html.erb +6 -0
- data/after_templates/addons/factory_bot_rails/app/views/layouts/_footer.html.erb +0 -0
- data/after_templates/addons/factory_bot_rails/app/views/layouts/_navbar.html.erb +6 -0
- data/after_templates/addons/factory_bot_rails/app/views/layouts/application.html.erb +29 -0
- data/after_templates/addons/factory_bot_rails/db/seeds.rb +1 -0
- data/after_templates/addons/factory_bot_rails/factories.rb +27 -0
- data/after_templates/addons/friendly_id/app/views/posts/_form.html.erb +32 -0
- data/after_templates/addons/friendly_id/app/views/posts/_post.html.erb +17 -0
- data/after_templates/addons/friendly_id/app/views/posts/_post.json.jbuilder +2 -0
- data/after_templates/addons/friendly_id/app/views/posts/edit.html.erb +10 -0
- data/after_templates/addons/friendly_id/app/views/posts/index.html.erb +14 -0
- data/after_templates/addons/friendly_id/app/views/posts/index.json.jbuilder +1 -0
- data/after_templates/addons/friendly_id/app/views/posts/new.html.erb +9 -0
- data/after_templates/addons/friendly_id/app/views/posts/show.json.jbuilder +1 -0
- data/after_templates/application/klueless/_.rb +99 -0
- data/after_templates/application/klueless/app/avo/dashboards/dashboard.rb +13 -0
- data/after_templates/application/klueless/app/avo/resources/db_schema_resource.rb +12 -0
- data/after_templates/application/klueless/app/avo/resources/rails_app_resource.rb +15 -0
- data/after_templates/application/klueless/app/avo/resources/rubocop_resource.rb +12 -0
- data/after_templates/application/klueless/app/avo/resources/table_count_resource.rb +12 -0
- data/after_templates/application/klueless/app/avo/resources/user_resource.rb +24 -0
- data/after_templates/application/klueless/app/controllers/home_controller.rb +12 -0
- data/after_templates/application/klueless/app/models/db_schema.rb +11 -0
- data/after_templates/application/klueless/app/models/rails_app.rb +3 -0
- data/after_templates/application/klueless/app/models/rubocop.rb +11 -0
- data/after_templates/application/klueless/app/models/table_count.rb +11 -0
- data/after_templates/application/klueless/app/queries/rubocop_log.psql +23 -0
- data/after_templates/application/klueless/app/queries/rubocop_log_query.rb +10 -0
- data/after_templates/application/klueless/app/queries/sql_query.rb +40 -0
- data/after_templates/application/klueless/app/services/seed_service.rb +7 -0
- data/after_templates/application/klueless/app/views/home/index.html.erb +6 -0
- data/after_templates/application/klueless/app/views/home/quick_signin.html.erb +3 -0
- data/after_templates/application/klueless/app/views/layouts/_footer.html.erb +0 -0
- data/after_templates/application/klueless/app/views/layouts/_navbar.html.erb +4 -0
- data/after_templates/application/klueless/app/views/layouts/application.html.erb +29 -0
- data/after_templates/application/klueless/config/initializers/avo.rb +101 -0
- data/after_templates/application/klueless/config/locales/en.yml +4 -0
- data/after_templates/application/klueless/db/seeds.rb +18 -0
- data/after_templates/application/printspeak/_.rb +65 -23
- data/after_templates/application/printspeak/db/seeds.rb +3 -3
- data/docs/last_run/app_generator_class.json +8 -0
- data/docs/last_run/app_generator_data.json +14 -12
- data/docs/last_run/rails_options_class.json +8 -0
- data/docs/last_run/rails_options_data.json +14 -13
- data/lib/rails_app_generator/addons/avo.rb +2 -0
- data/lib/rails_app_generator/addons/factory_bot_rails.rb +15 -0
- data/lib/rails_app_generator/addons/scenic.rb +38 -0
- data/lib/rails_app_generator/app_generator.rb +18 -0
- data/lib/rails_app_generator/rag_initializer.rb +1 -0
- data/lib/rails_app_generator/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/addons/avo.json +1 -1
- data/profiles/addons/factory_bot_rails.json +14 -0
- data/profiles/application/klueless.json +23 -0
- data/profiles/application/printspeak.json +7 -1
- data/templates/Gemfile.erb +0 -1
- metadata +50 -2
@@ -0,0 +1,23 @@
|
|
1
|
+
WITH
|
2
|
+
|
3
|
+
files AS (
|
4
|
+
SELECT jsonb_array_elements(data->'files') FROM rubocops
|
5
|
+
),
|
6
|
+
lines AS (
|
7
|
+
SELECT
|
8
|
+
jsonb_array_elements(files)->>'file' as file,
|
9
|
+
jsonb_array_elements(files)->'lines' as lines
|
10
|
+
FROM files
|
11
|
+
),
|
12
|
+
rubocop_log AS (
|
13
|
+
SELECT
|
14
|
+
jsonb_array_elements(lines)->>'position' as position,
|
15
|
+
jsonb_array_elements(lines)->>'status' as status,
|
16
|
+
jsonb_array_elements(lines)->>'status_message' as status_message,
|
17
|
+
jsonb_array_elements(lines)->>'cop' as cop,
|
18
|
+
jsonb_array_elements(lines)->>'message' as message,
|
19
|
+
jsonb_array_elements(lines)->>'full_line' as full_line,
|
20
|
+
jsonb_array_elements(lines)->>'file_name' as file_name
|
21
|
+
FROM lines
|
22
|
+
)
|
23
|
+
select * from rubocop_log
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class SqlQuery
|
2
|
+
attr_reader :opts
|
3
|
+
attr_reader :sql
|
4
|
+
attr_reader :record
|
5
|
+
|
6
|
+
def initialize(**opts)
|
7
|
+
@opts = opts
|
8
|
+
@sql = self.class.sql
|
9
|
+
@record = self.class.record
|
10
|
+
end
|
11
|
+
|
12
|
+
def query(sql_query)
|
13
|
+
result = connection.execute(sql_query)
|
14
|
+
result.map { |row| record.new(**row) }
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
attr_reader :sql
|
19
|
+
attr_reader :record
|
20
|
+
|
21
|
+
def query(**opts)
|
22
|
+
new(**opts).call
|
23
|
+
end
|
24
|
+
|
25
|
+
def sql_resource(filename)
|
26
|
+
sql_file = File.expand_path(filename, File.dirname(__FILE__))
|
27
|
+
@sql = File.read(sql_file)
|
28
|
+
end
|
29
|
+
|
30
|
+
def fields(fields)
|
31
|
+
@record = Struct.new(*fields, keyword_init: true)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
protected
|
36
|
+
|
37
|
+
def connection
|
38
|
+
ActiveRecord::Base.connection
|
39
|
+
end
|
40
|
+
end
|
File without changes
|
@@ -0,0 +1,29 @@
|
|
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
|
+
<header>
|
18
|
+
<%%= render 'layouts/navbar' %>
|
19
|
+
<hr />
|
20
|
+
</header>
|
21
|
+
<main>
|
22
|
+
<%%= yield %>
|
23
|
+
</main>
|
24
|
+
<footer>
|
25
|
+
<%%= render 'layouts/footer' %>
|
26
|
+
</footer>
|
27
|
+
</body>
|
28
|
+
</html>
|
29
|
+
|
@@ -0,0 +1,101 @@
|
|
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 = 'Klueless NoCaaS'
|
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 "App Meta Data" do
|
76
|
+
resource :db_schema, label: 'DB Schema'
|
77
|
+
resource :rubocop, label: 'RuboCop'
|
78
|
+
resource :table_count, label: 'Table Count'
|
79
|
+
end
|
80
|
+
|
81
|
+
# group "Xxx" do # , collapsable: true, collapsed: true
|
82
|
+
# end
|
83
|
+
|
84
|
+
group "Admin" do
|
85
|
+
resource :user
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
section "Tools", icon: "tools" do
|
90
|
+
all_tools
|
91
|
+
end
|
92
|
+
|
93
|
+
section I18n.t('admin.external_links'), icon: "heroicons/outline/link", collapsable: true, collapsed: true do
|
94
|
+
link 'Appy Dave', path: 'https://appydave.com', target: :_blank
|
95
|
+
link 'Klueless', path: 'https://klueless.io/', target: :_blank
|
96
|
+
end
|
97
|
+
}
|
98
|
+
config.profile_menu = -> {
|
99
|
+
link "Profile", path: "/admin/profile", icon: "user-circle"
|
100
|
+
}
|
101
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
@data_path = "/Users/davidcruwys/dev/printspeak/printspeak-generator/.builders/.data/"
|
2
|
+
|
3
|
+
david = User.create_with(name: 'david', password: 'password').find_or_create_by(email: 'david@site.com')
|
4
|
+
|
5
|
+
def get_data(filename)
|
6
|
+
json = File.read(File.join(@data_path, filename))
|
7
|
+
JSON.parse(json)
|
8
|
+
end
|
9
|
+
|
10
|
+
rails_app = RailsApp.create(name: 'Printspeak', user: david)
|
11
|
+
|
12
|
+
puts 'Create Rubocop Data'
|
13
|
+
Rubocop.create(rails_app: rails_app, data: get_data('rubocop.json'))
|
14
|
+
|
15
|
+
puts 'Create Table Count Data'
|
16
|
+
TableCount.create(rails_app: rails_app, data: get_data('sql_count.json'))
|
17
|
+
|
18
|
+
|
@@ -8,42 +8,84 @@ self.local_template_path = File.dirname(__FILE__)
|
|
8
8
|
|
9
9
|
gac 'base rails 7 image created'
|
10
10
|
|
11
|
-
|
12
|
-
add_controller('page', 'benefits', 'faq', 'terms', 'privacy', '--skip-routes')
|
13
|
-
|
14
|
-
route("root 'home#index'")
|
15
|
-
route(<<-'RUBY')
|
16
|
-
PageController.action_methods.each do |action|
|
17
|
-
get "/#{action}", to: "page##{action}", as: "page_#{action}"
|
18
|
-
end
|
19
|
-
RUBY
|
11
|
+
prepare_environment
|
20
12
|
|
21
13
|
after_bundle do
|
22
|
-
|
14
|
+
force_copy
|
15
|
+
prepare_postgresql
|
16
|
+
scaffolds
|
17
|
+
setup_controllers
|
18
|
+
setup_customizations
|
23
19
|
setup_db
|
24
|
-
|
20
|
+
setup_avo
|
25
21
|
end
|
26
22
|
|
27
|
-
def
|
28
|
-
|
23
|
+
def scaffolds
|
24
|
+
add_scaffold('post', 'title', 'body:text')
|
25
|
+
add_scaffold('people', 'first_name', 'last_name', 'age:integer', 'address:text')
|
26
|
+
end
|
29
27
|
|
30
|
-
|
31
|
-
|
28
|
+
def setup_controllers
|
29
|
+
route("root 'home#index'")
|
32
30
|
|
33
|
-
|
31
|
+
add_controller('home', 'index')
|
32
|
+
add_controller('page', 'benefits', 'faq', 'terms', 'privacy', '--skip-routes')
|
34
33
|
|
35
|
-
|
36
|
-
|
34
|
+
route("root 'home#index'")
|
35
|
+
route(<<-'RUBY')
|
36
|
+
PageController.action_methods.each do |action|
|
37
|
+
get "/#{action}", to: "page##{action}", as: "page_#{action}"
|
38
|
+
end
|
39
|
+
RUBY
|
40
|
+
end
|
37
41
|
|
38
|
-
|
42
|
+
def setup_customizations
|
43
|
+
directory "app/assets/images"
|
44
|
+
directory "app/assets/stylesheets"
|
45
|
+
directory "app/controllers"
|
46
|
+
directory "app/models"
|
47
|
+
directory "app/views"
|
48
|
+
# directory "app/services"
|
39
49
|
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
50
|
+
end
|
40
51
|
|
52
|
+
def setup_db
|
41
53
|
template 'db/seeds.rb' , 'db/seeds.rb'
|
54
|
+
|
55
|
+
gsub_file('config/database.yml', ' encoding: unicode', db_development_settings)
|
56
|
+
|
57
|
+
db(drop: true, create: true, migrate: true, seed: true)
|
42
58
|
end
|
43
59
|
|
44
|
-
def
|
45
|
-
|
46
|
-
|
60
|
+
def setup_avo
|
61
|
+
# generate('avo:install')
|
62
|
+
|
63
|
+
# generate('avo:resource Category')
|
64
|
+
# generate('avo:resource Post')
|
65
|
+
# generate('avo:resource Comment')
|
66
|
+
# generate('avo:resource Location')
|
67
|
+
# generate('avo:resource Room')
|
68
|
+
# generate('avo:resource Booking')
|
69
|
+
# generate('avo:resource User')
|
70
|
+
# generate('avo:dashboard Dashboard')
|
71
|
+
|
72
|
+
# directory "app/avo"
|
73
|
+
# directory "config/initializers"
|
74
|
+
# directory "config/locales"
|
75
|
+
|
76
|
+
# add devise support
|
77
|
+
# gsub_file 'config/initializers/avo.rb', %(# config.current_user_method = {}), 'config.current_user_method = :current_user'
|
78
|
+
end
|
79
|
+
|
80
|
+
def prepare_postgresql
|
81
|
+
gsub_file('config/database.yml', ' encoding: unicode', db_development_settings)
|
82
|
+
end
|
47
83
|
|
48
|
-
|
84
|
+
def db_development_settings
|
85
|
+
<<-'RUBY'
|
86
|
+
encoding: unicode
|
87
|
+
host: <%= ENV['DATABASE_HOST'] %>
|
88
|
+
username: <%= ENV['DATABASE_USERNAME'] %>
|
89
|
+
password: <%= ENV['DATABASE_PASSWORD'] %>
|
90
|
+
RUBY
|
49
91
|
end
|
@@ -11,6 +11,6 @@
|
|
11
11
|
# bob = User.create(email: 'bob@site.com', name: 'bob', password: 'password')
|
12
12
|
# lisa = User.create(email: 'lisa@site.com', name: 'lisa', password: 'password')
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
10.times do |i|
|
15
|
+
Post.create(title: "Post #{i}", body: "This is the body of post #{i}")
|
16
|
+
end
|
@@ -52,6 +52,7 @@
|
|
52
52
|
"add_devise",
|
53
53
|
"add_devise_masquerade",
|
54
54
|
"add_dotenv",
|
55
|
+
"add_factory_bot_rails",
|
55
56
|
"add_faker",
|
56
57
|
"add_friendly_id",
|
57
58
|
"add_groupdate",
|
@@ -440,6 +441,13 @@
|
|
440
441
|
"default": false,
|
441
442
|
"required": false
|
442
443
|
},
|
444
|
+
{
|
445
|
+
"name": "add_factory_bot_rails",
|
446
|
+
"description": "Indicates when to generate add factory bot rails",
|
447
|
+
"type": "boolean",
|
448
|
+
"default": false,
|
449
|
+
"required": false
|
450
|
+
},
|
443
451
|
{
|
444
452
|
"name": "add_faker",
|
445
453
|
"description": "Indicates when to generate add faker",
|
@@ -3,8 +3,8 @@
|
|
3
3
|
"skip_namespace": false,
|
4
4
|
"skip_collision_check": false,
|
5
5
|
"ruby": "/Users/davidcruwys/.asdf/installs/ruby/3.1.1/bin/ruby",
|
6
|
-
"database": "
|
7
|
-
"skip_git":
|
6
|
+
"database": "postgresql",
|
7
|
+
"skip_git": false,
|
8
8
|
"skip_keeps": false,
|
9
9
|
"skip_action_mailer": false,
|
10
10
|
"skip_action_mailbox": false,
|
@@ -32,18 +32,19 @@
|
|
32
32
|
"test": "rspec",
|
33
33
|
"add_acts_as_list": false,
|
34
34
|
"add_administrate": false,
|
35
|
-
"add_annotate":
|
36
|
-
"add_avo":
|
35
|
+
"add_annotate": true,
|
36
|
+
"add_avo": true,
|
37
37
|
"add_bcrypt": false,
|
38
|
-
"add_brakeman":
|
38
|
+
"add_brakeman": true,
|
39
39
|
"add_browser": false,
|
40
|
-
"add_bundler_audit":
|
40
|
+
"add_bundler_audit": true,
|
41
41
|
"add_chartkick": false,
|
42
|
-
"add_devise":
|
42
|
+
"add_devise": true,
|
43
43
|
"add_devise_masquerade": false,
|
44
|
-
"add_dotenv":
|
44
|
+
"add_dotenv": true,
|
45
|
+
"add_factory_bot_rails": true,
|
45
46
|
"add_faker": true,
|
46
|
-
"add_friendly_id":
|
47
|
+
"add_friendly_id": false,
|
47
48
|
"add_groupdate": false,
|
48
49
|
"add_hexapdf": false,
|
49
50
|
"add_httparty": false,
|
@@ -51,7 +52,7 @@
|
|
51
52
|
"add_image_processing": false,
|
52
53
|
"add_kaminari": false,
|
53
54
|
"add_lograge": false,
|
54
|
-
"add_minimal_css":
|
55
|
+
"add_minimal_css": false,
|
55
56
|
"minimal_css_library": "water.css",
|
56
57
|
"add_mini_magick": false,
|
57
58
|
"add_motor_admin": false,
|
@@ -62,8 +63,9 @@
|
|
62
63
|
"add_ransack": false,
|
63
64
|
"add_redcarpet": false,
|
64
65
|
"add_rolify": false,
|
65
|
-
"add_rubocop":
|
66
|
+
"add_rubocop": true,
|
66
67
|
"add_twilio_ruby": false,
|
67
|
-
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/
|
68
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/application/klueless/_.rb",
|
69
|
+
"css": "tailwind"
|
68
70
|
}
|
69
71
|
}
|
@@ -52,6 +52,7 @@
|
|
52
52
|
"add_devise",
|
53
53
|
"add_devise_masquerade",
|
54
54
|
"add_dotenv",
|
55
|
+
"add_factory_bot_rails",
|
55
56
|
"add_faker",
|
56
57
|
"add_friendly_id",
|
57
58
|
"add_groupdate",
|
@@ -440,6 +441,13 @@
|
|
440
441
|
"default": false,
|
441
442
|
"required": false
|
442
443
|
},
|
444
|
+
{
|
445
|
+
"name": "add_factory_bot_rails",
|
446
|
+
"description": "",
|
447
|
+
"type": "boolean",
|
448
|
+
"default": false,
|
449
|
+
"required": false
|
450
|
+
},
|
443
451
|
{
|
444
452
|
"name": "add_faker",
|
445
453
|
"description": "",
|
@@ -7,9 +7,9 @@
|
|
7
7
|
"quiet": false,
|
8
8
|
"skip": false,
|
9
9
|
"ruby": "/Users/davidcruwys/.asdf/installs/ruby/3.1.1/bin/ruby",
|
10
|
-
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/
|
11
|
-
"database": "
|
12
|
-
"skip_git":
|
10
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/application/klueless/_.rb",
|
11
|
+
"database": "postgresql",
|
12
|
+
"skip_git": false,
|
13
13
|
"skip_keeps": false,
|
14
14
|
"skip_action_mailer": false,
|
15
15
|
"skip_action_mailbox": false,
|
@@ -36,24 +36,25 @@
|
|
36
36
|
"api": false,
|
37
37
|
"minimal": false,
|
38
38
|
"javascript": "importmap",
|
39
|
-
"css": "",
|
39
|
+
"css": "tailwind",
|
40
40
|
"skip_bundle": false,
|
41
41
|
"note": "",
|
42
42
|
"test": "rspec",
|
43
43
|
"add_acts_as_list": false,
|
44
44
|
"add_administrate": false,
|
45
|
-
"add_annotate":
|
46
|
-
"add_avo":
|
45
|
+
"add_annotate": true,
|
46
|
+
"add_avo": true,
|
47
47
|
"add_bcrypt": false,
|
48
|
-
"add_brakeman":
|
48
|
+
"add_brakeman": true,
|
49
49
|
"add_browser": false,
|
50
|
-
"add_bundler_audit":
|
50
|
+
"add_bundler_audit": true,
|
51
51
|
"add_chartkick": false,
|
52
|
-
"add_devise":
|
52
|
+
"add_devise": true,
|
53
53
|
"add_devise_masquerade": false,
|
54
|
-
"add_dotenv":
|
54
|
+
"add_dotenv": true,
|
55
|
+
"add_factory_bot_rails": true,
|
55
56
|
"add_faker": true,
|
56
|
-
"add_friendly_id":
|
57
|
+
"add_friendly_id": false,
|
57
58
|
"add_groupdate": false,
|
58
59
|
"add_hexapdf": false,
|
59
60
|
"add_httparty": false,
|
@@ -61,7 +62,7 @@
|
|
61
62
|
"add_image_processing": false,
|
62
63
|
"add_kaminari": false,
|
63
64
|
"add_lograge": false,
|
64
|
-
"add_minimal_css":
|
65
|
+
"add_minimal_css": false,
|
65
66
|
"minimal_css_library": "water.css",
|
66
67
|
"add_mini_magick": false,
|
67
68
|
"add_motor_admin": false,
|
@@ -72,7 +73,7 @@
|
|
72
73
|
"add_ransack": false,
|
73
74
|
"add_redcarpet": false,
|
74
75
|
"add_rolify": false,
|
75
|
-
"add_rubocop":
|
76
|
+
"add_rubocop": true,
|
76
77
|
"add_twilio_ruby": false
|
77
78
|
}
|
78
79
|
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsAppGenerator
|
4
|
+
# Custom add-ons for RailsAppGenerator
|
5
|
+
module AddOns
|
6
|
+
# Add FactoryBotRails to rails application
|
7
|
+
class FactoryBotRails < RailsAppGenerator::Addon
|
8
|
+
required_gem gem.version('factory_bot_rails', '6.2.0', 'Provides Rails integration for factory_bot')
|
9
|
+
|
10
|
+
def apply
|
11
|
+
say 'Setting up FactoryBotRails'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# lib/rails_app_generator/rag_initializer.rb
|
4
|
+
# add_if(:scenic)
|
5
|
+
# rag.add_option :add_scenic , type: :boolean, default: false
|
6
|
+
|
7
|
+
module RailsAppGenerator
|
8
|
+
# Custom add-ons for RailsAppGenerator
|
9
|
+
module AddOns
|
10
|
+
# Add Scenic to rails application
|
11
|
+
class Scenic < RailsAppGenerator::Addon
|
12
|
+
required_gem gem.version('scenic', '1.6.0', '')
|
13
|
+
|
14
|
+
def apply
|
15
|
+
say 'Setting up Scenic'
|
16
|
+
# template('scenic_template.rb', 'target/scenic.rb', force: true)
|
17
|
+
# template('app/javascript/stylesheets/components.scss')
|
18
|
+
# create_file('target/scenic.rb', 'put your content here')
|
19
|
+
# directory 'app/template', 'app/target', force: true
|
20
|
+
# empty_directory 'app/target'
|
21
|
+
# inject_into_file('app/application.js', "some content")
|
22
|
+
# rails_command('tailwindcss:install')
|
23
|
+
end
|
24
|
+
|
25
|
+
def before_template
|
26
|
+
say 'Setting up Scenic - before custom template'
|
27
|
+
end
|
28
|
+
|
29
|
+
def before_bundle
|
30
|
+
say 'Setting up Scenic - before bundle install'
|
31
|
+
end
|
32
|
+
|
33
|
+
def after_bundle
|
34
|
+
say 'Setting up Scenic - after bundle install'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|