rails_app_generator 0.1.25 → 0.1.28
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/after_templates/addons/mini_magick/_.rb +28 -0
- data/after_templates/addons/mini_magick/app/assets/images/cat1.jpg +0 -0
- data/after_templates/addons/mini_magick/app/assets/images/cat2.jpg +0 -0
- data/after_templates/addons/mini_magick/app/assets/images/cat3.jpg +0 -0
- data/after_templates/addons/mini_magick/app/controllers/home_controller.rb +43 -0
- data/after_templates/addons/mini_magick/app/views/home/index.html.erb +25 -0
- data/after_templates/addons/mini_magick/app/views/layouts/_alerts.html.erb +2 -0
- data/after_templates/addons/mini_magick/app/views/layouts/_footer.html.erb +3 -0
- data/after_templates/addons/mini_magick/app/views/layouts/_navbar.html.erb +2 -0
- data/after_templates/addons/mini_magick/app/views/layouts/application.html.erb +28 -0
- data/lib/rails_app_generator/{add_on.rb → addon.rb} +3 -26
- data/lib/rails_app_generator/addon_util.rb +21 -0
- data/lib/rails_app_generator/addons/acts_as_list.rb +1 -1
- data/lib/rails_app_generator/addons/annotate.rb +1 -1
- data/lib/rails_app_generator/addons/browser.rb +1 -1
- data/lib/rails_app_generator/addons/chartkick.rb +1 -1
- data/lib/rails_app_generator/addons/continuous_integration.rb +1 -1
- data/lib/rails_app_generator/addons/devise.rb +1 -1
- data/lib/rails_app_generator/addons/docker.rb +1 -1
- data/lib/rails_app_generator/addons/docker_compose.rb +1 -1
- data/lib/rails_app_generator/addons/dotenv.rb +1 -1
- data/lib/rails_app_generator/addons/factory_bot.rb +1 -1
- data/lib/rails_app_generator/addons/faker.rb +1 -1
- data/lib/rails_app_generator/addons/foreman.rb +1 -1
- data/lib/rails_app_generator/addons/generators.rb +1 -1
- data/lib/rails_app_generator/addons/groupdate.rb +1 -1
- data/lib/rails_app_generator/addons/hexapdf.rb +1 -1
- data/lib/rails_app_generator/addons/high_voltage.rb +1 -1
- data/lib/rails_app_generator/addons/honeybadger.rb +1 -1
- data/lib/rails_app_generator/addons/httparty.rb +1 -1
- data/lib/rails_app_generator/addons/inline_svg.rb +1 -1
- data/lib/rails_app_generator/addons/irbrc.rb +1 -1
- data/lib/rails_app_generator/addons/lograge.rb +1 -1
- data/lib/rails_app_generator/addons/mini_magick.rb +2 -19
- data/lib/rails_app_generator/addons/pundit.rb +1 -1
- data/lib/rails_app_generator/addons/rails_html_sanitizer.rb +1 -1
- data/lib/rails_app_generator/addons/rspec.rb +1 -1
- data/lib/rails_app_generator/addons/rubocop.rb +1 -1
- data/lib/rails_app_generator/addons/scaffold.rb +1 -1
- data/lib/rails_app_generator/addons/services.rb +1 -1
- data/lib/rails_app_generator/addons/sidekiq.rb +2 -2
- data/lib/rails_app_generator/addons/stimulus.rb +1 -1
- data/lib/rails_app_generator/addons/stimulus_components.rb +1 -1
- data/lib/rails_app_generator/addons/tailwind.rb +1 -1
- data/lib/rails_app_generator/addons/views.rb +1 -1
- data/lib/rails_app_generator/app_generator.rb +2 -15
- data/lib/rails_app_generator/context.rb +1 -1
- data/lib/rails_app_generator/dependencies.rb +2 -2
- data/lib/rails_app_generator/options/options_builder.rb +15 -40
- data/lib/rails_app_generator/options/rails_options.rb +37 -37
- data/lib/rails_app_generator/version.rb +1 -1
- data/lib/rails_app_generator.rb +4 -2
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/addons/mini_magick.json +12 -0
- data/tasks/addon.thor +4 -4
- data/templates/thor_task/addon/addon.tt +1 -1
- metadata +14 -6
- data/lib/rails_app_generator/addons/xmen.rb +0 -17
- data/lib/rails_app_generator/generators/advisories_generator.rb +0 -18
- data/lib/rails_app_generator/generators/base.rb +0 -60
- data/lib/rails_app_generator/generators/foo_generator.rb +0 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b5005b34988e8bf214b22d0f09e109ec5df50c29dfac7c677586ecf7b53c112d
|
|
4
|
+
data.tar.gz: 1a2e5b7f16bb4f98d401ed8d475373925b4f72c50e67f38c51d53272989ab74c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 587960fc7b519882bc63ae213a0af9309597b2a367ce8f556ca1f0216748f5f963b65167f4b71e30ab517074adeaaf709a9eee4d4adee80b1d934d6cf7816f17
|
|
7
|
+
data.tar.gz: beba122ba762ab6dfa425ad3ccf30c25de6da726ea9caf49e7c68c4552f23b7ba6e2a52ab655629d30aa1707bb7b2d7e1e8c54f13c19e18947dc962137328f96
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
## [0.1.27](https://github.com/klueless-io/rails_app_generator/compare/v0.1.26...v0.1.27) (2022-08-06)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* add addon_util and specs ([55e96be](https://github.com/klueless-io/rails_app_generator/commit/55e96bef66e05f33c7c1c1347fd04ff70166d352))
|
|
7
|
+
|
|
8
|
+
## [0.1.26](https://github.com/klueless-io/rails_app_generator/compare/v0.1.25...v0.1.26) (2022-08-06)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* profile mini_magick ([f44b932](https://github.com/klueless-io/rails_app_generator/commit/f44b932df8fa7d817e2064d74af49476f82710d3))
|
|
14
|
+
* profile mini_magick ([6935964](https://github.com/klueless-io/rails_app_generator/commit/69359640e7791691052aac1496b43aa1a5fd99c0))
|
|
15
|
+
|
|
16
|
+
## [0.1.25](https://github.com/klueless-io/rails_app_generator/compare/v0.1.24...v0.1.25) (2022-08-06)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* addon mini_magick ([7897e60](https://github.com/klueless-io/rails_app_generator/commit/7897e60e6aaa63813135251f7337b0dab23525a5))
|
|
22
|
+
|
|
1
23
|
## [0.1.24](https://github.com/klueless-io/rails_app_generator/compare/v0.1.23...v0.1.24) (2022-08-06)
|
|
2
24
|
|
|
3
25
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# require 'pry'
|
|
4
|
+
|
|
5
|
+
# Manipulate images with minimal use of memory via ImageMagick / GraphicsMagick
|
|
6
|
+
#
|
|
7
|
+
# exe/rag addons/mini_magick
|
|
8
|
+
|
|
9
|
+
self.local_template_path = File.dirname(__FILE__)
|
|
10
|
+
|
|
11
|
+
gac 'base rails 7 image created'
|
|
12
|
+
|
|
13
|
+
add_controller('home', 'index')
|
|
14
|
+
route("root 'home#index'")
|
|
15
|
+
|
|
16
|
+
force_copy
|
|
17
|
+
|
|
18
|
+
copy_file 'app/controllers/home_controller.rb' , 'app/controllers/home_controller.rb'
|
|
19
|
+
copy_file 'app/views/home/index.html.erb' , 'app/views/home/index.html.erb'
|
|
20
|
+
|
|
21
|
+
copy_file 'app/views/layouts/_alerts.html.erb' , 'app/views/layouts/_alerts.html.erb'
|
|
22
|
+
copy_file 'app/views/layouts/_navbar.html.erb' , 'app/views/layouts/_navbar.html.erb'
|
|
23
|
+
copy_file 'app/views/layouts/_footer.html.erb' , 'app/views/layouts/_footer.html.erb'
|
|
24
|
+
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
|
25
|
+
|
|
26
|
+
copy_file 'app/assets/images/cat1.jpg' , 'app/assets/images/cat1.jpg'
|
|
27
|
+
copy_file 'app/assets/images/cat2.jpg' , 'app/assets/images/cat2.jpg'
|
|
28
|
+
copy_file 'app/assets/images/cat3.jpg' , 'app/assets/images/cat3.jpg'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
class HomeController < ApplicationController
|
|
2
|
+
def index
|
|
3
|
+
@img = get_image
|
|
4
|
+
|
|
5
|
+
@img_rotate = get_image do |options|
|
|
6
|
+
options.resize("300x300")
|
|
7
|
+
options.rotate "-45"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
@img_negate = get_image do |options|
|
|
11
|
+
options.resize("300x300")
|
|
12
|
+
options.negate
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
@img_distort = get_image do |options|
|
|
16
|
+
options.resize("300x300")
|
|
17
|
+
options.distort("Perspective", "0,0,0,0 0,45,0,45 69,0,60,10 69,45,60,35")
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def image_name
|
|
24
|
+
@variable ||= begin
|
|
25
|
+
image_names = [
|
|
26
|
+
'cat1.jpg',
|
|
27
|
+
'cat2.jpg',
|
|
28
|
+
'cat3.jpg'
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
"app/assets/images/#{image_names.sample}"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def get_image(&block)
|
|
36
|
+
puts image_name
|
|
37
|
+
image = MiniMagick::Image.open(image_name)
|
|
38
|
+
image.combine_options(&block)
|
|
39
|
+
|
|
40
|
+
Base64.encode64(image.to_blob)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<h1>Mini magick</h1>
|
|
2
|
+
|
|
3
|
+
<h2>Manipulate images with minimal use of memory via ImageMagick / GraphicsMagick</h2>
|
|
4
|
+
|
|
5
|
+
<table>
|
|
6
|
+
<tr>
|
|
7
|
+
<td>
|
|
8
|
+
<h3>Plain</h3>
|
|
9
|
+
<%= image_tag "data://image/png;base64,#{@img}" %>
|
|
10
|
+
</td>
|
|
11
|
+
<td>
|
|
12
|
+
<h3>Rotate</h3>
|
|
13
|
+
<%= image_tag "data://image/png;base64,#{@img_rotate}" %>
|
|
14
|
+
</td>
|
|
15
|
+
<td>
|
|
16
|
+
<h3>Negate</h3>
|
|
17
|
+
<%= image_tag "data://image/png;base64,#{@img_negate}" %>
|
|
18
|
+
</td>
|
|
19
|
+
<td>
|
|
20
|
+
<h3>Distort</h3>
|
|
21
|
+
<%= image_tag "data://image/png;base64,#{@img_distort}" %>
|
|
22
|
+
</td>
|
|
23
|
+
</tr>
|
|
24
|
+
</table>
|
|
25
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
<style>
|
|
15
|
+
.alert { color: red; }
|
|
16
|
+
.notice { color: green; }
|
|
17
|
+
</style>
|
|
18
|
+
</head>
|
|
19
|
+
|
|
20
|
+
<body>
|
|
21
|
+
<%%= render 'layouts/navbar' %>
|
|
22
|
+
<main>
|
|
23
|
+
<%%= render 'layouts/alerts' %>
|
|
24
|
+
<%%= yield %>
|
|
25
|
+
</main>
|
|
26
|
+
<%%= render 'layouts/footer' %>
|
|
27
|
+
</body>
|
|
28
|
+
</html>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module RailsAppGenerator
|
|
4
|
-
#
|
|
5
|
-
class
|
|
4
|
+
# Base class for all add-ons
|
|
5
|
+
class Addon < Rails::Generators::Base
|
|
6
6
|
include Thor::Actions
|
|
7
7
|
include Rails::Generators::Actions
|
|
8
8
|
include Rails::Generators::AppName
|
|
@@ -41,7 +41,7 @@ module RailsAppGenerator
|
|
|
41
41
|
return false if options["skip_#{addon_name}".to_sym]
|
|
42
42
|
return true if context.default_addons.include?(addon_name)
|
|
43
43
|
|
|
44
|
-
klass = addon_name.nil? ? self.class :
|
|
44
|
+
klass = addon_name.nil? ? self.class : AddonUtil.get(addon_name)
|
|
45
45
|
Dependencies.new(klass, context).satisfied?
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -82,29 +82,6 @@ module RailsAppGenerator
|
|
|
82
82
|
# rubocop:enable Metrics/BlockLength
|
|
83
83
|
|
|
84
84
|
class << self
|
|
85
|
-
# attr_reader :before_bundle_callback
|
|
86
|
-
# attr_reader :after_bundle_callback
|
|
87
|
-
|
|
88
|
-
# def before_bundle(&block)
|
|
89
|
-
# @before_bundle_callback = block
|
|
90
|
-
# end
|
|
91
|
-
|
|
92
|
-
# def after_bundle(&block)
|
|
93
|
-
# @after_bundle_callback = block
|
|
94
|
-
# end
|
|
95
|
-
|
|
96
|
-
# def apply(context = Context.new({}))
|
|
97
|
-
# instance = new(context)
|
|
98
|
-
# return unless instance.uses?
|
|
99
|
-
|
|
100
|
-
# instance.apply
|
|
101
|
-
# end
|
|
102
|
-
|
|
103
|
-
def get(addon)
|
|
104
|
-
addon = addon.to_s.capitalize.camelize
|
|
105
|
-
"RailsAppGenerator::AddOns::#{addon}".constantize
|
|
106
|
-
end
|
|
107
|
-
|
|
108
85
|
def addon_name
|
|
109
86
|
name.demodulize.underscore.to_sym
|
|
110
87
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RailsAppGenerator
|
|
4
|
+
# Utility methods for accessing Addons
|
|
5
|
+
class AddonUtil
|
|
6
|
+
class << self
|
|
7
|
+
# Get the Addon classes that are stored in the RailsAppGenerator::Addons::* namespace
|
|
8
|
+
def classes
|
|
9
|
+
AddOns.constants
|
|
10
|
+
.map { |addon_klass_name| AddOns.const_get(addon_klass_name) }
|
|
11
|
+
.select { |klass| klass.ancestors.include?(RailsAppGenerator::Addon) }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Convert a string to a symbol to a fully qualified class constant
|
|
15
|
+
def get(addon)
|
|
16
|
+
addon = addon.to_s.capitalize.camelize
|
|
17
|
+
"RailsAppGenerator::AddOns::#{addon}".constantize
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add ActsAsList to rails application
|
|
7
|
-
class ActsAsList <
|
|
7
|
+
class ActsAsList < RailsAppGenerator::Addon
|
|
8
8
|
depends_on :active_record
|
|
9
9
|
required_gem gem.version('acts_as_list', '1.0.4', <<~COMMENT)
|
|
10
10
|
This "acts_as" extension provides the capabilities for sorting and reordering a number of objects in a list.
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Annotate for ActiveRecord models to rails application
|
|
7
|
-
class Annotate <
|
|
7
|
+
class Annotate < RailsAppGenerator::Addon
|
|
8
8
|
depends_on :active_record
|
|
9
9
|
|
|
10
10
|
required_gem gem.version('annotate', '3.2.0', 'Annotates Rails/ActiveRecord Models, routes, fixtures, and others based on the database schema.')
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Browser to rails application
|
|
7
|
-
class Browser <
|
|
7
|
+
class Browser < RailsAppGenerator::Addon
|
|
8
8
|
required_gem gem.version('browser', '5.3.1', 'Do some browser detection with Ruby.')
|
|
9
9
|
|
|
10
10
|
def apply; end
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Chartkick to rails application
|
|
7
|
-
class Chartkick <
|
|
7
|
+
class Chartkick < RailsAppGenerator::Addon
|
|
8
8
|
required_gem gem.version('chartkick', '4.2.1', 'Create beautiful JavaScript charts with one line of Ruby')
|
|
9
9
|
|
|
10
10
|
def apply; end
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add GitHub Actions continuous integration
|
|
7
|
-
class ContinuousIntegration <
|
|
7
|
+
class ContinuousIntegration < RailsAppGenerator::Addon
|
|
8
8
|
def apply
|
|
9
9
|
say 'continuous integration - Setup GitHub Actions'
|
|
10
10
|
template('github/workflows/build.yml.erb', '.github/workflows/build.yml')
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Devise authentication to rails application
|
|
7
|
-
class Devise <
|
|
7
|
+
class Devise < RailsAppGenerator::Addon
|
|
8
8
|
depends_on :active_record
|
|
9
9
|
|
|
10
10
|
required_gem gem.version('devise', '4.8.1', 'Flexible authentication solution for Rails with Warden')
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Docker to rails application
|
|
7
|
-
class Docker <
|
|
7
|
+
class Docker < RailsAppGenerator::Addon
|
|
8
8
|
def apply
|
|
9
9
|
template 'Dockerfile.erb', 'Dockerfile'
|
|
10
10
|
template '.dockerignore.erb', '.dockerignore'
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Docker Compose to rails application
|
|
7
|
-
class DockerCompose <
|
|
7
|
+
class DockerCompose < RailsAppGenerator::Addon
|
|
8
8
|
def apply
|
|
9
9
|
template 'docker-compose.yml.erb', 'docker-compose.yml'
|
|
10
10
|
end
|
|
@@ -7,7 +7,7 @@ module RailsAppGenerator
|
|
|
7
7
|
# Custom add-ons for RailsAppGenerator
|
|
8
8
|
module AddOns
|
|
9
9
|
# Add Faker to rails application
|
|
10
|
-
class Faker <
|
|
10
|
+
class Faker < RailsAppGenerator::Addon
|
|
11
11
|
required_gem gem.version('faker', '2.22.0', 'Faker, a port of Data::Faker from Perl, is used to easily generate fake data: names, addresses, phone numbers, etc.')
|
|
12
12
|
|
|
13
13
|
def apply; end
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Foreman process management for applications with multiple components
|
|
7
|
-
class Foreman <
|
|
7
|
+
class Foreman < RailsAppGenerator::Addon
|
|
8
8
|
def apply
|
|
9
9
|
template '.foreman.erb', '.foreman'
|
|
10
10
|
template 'Procfile.erb', 'Procfile'
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Rails Generator configuration to rails application
|
|
7
|
-
class Generators <
|
|
7
|
+
class Generators < RailsAppGenerator::Addon
|
|
8
8
|
def apply
|
|
9
9
|
directory('lib/generators/rails/navigation', 'lib/generators/rails/navigation') if uses?(:views)
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Groupdate to rails application
|
|
7
|
-
class Groupdate <
|
|
7
|
+
class Groupdate < RailsAppGenerator::Addon
|
|
8
8
|
required_gem gem.version('groupdate', '6.1.0', 'The simplest way to group temporal data')
|
|
9
9
|
|
|
10
10
|
# NOTE: in the examples, the Groupdate gem is used in conjunction with Chartkick.
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Hexapdf to rails application
|
|
7
|
-
class Hexapdf <
|
|
7
|
+
class Hexapdf < RailsAppGenerator::Addon
|
|
8
8
|
required_gem gem.version('hexapdf', '0.24.0', 'HexaPDF is a pure Ruby library with an accompanying application for working with PDF files.')
|
|
9
9
|
|
|
10
10
|
def apply; end
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Honeybadger to rails application
|
|
7
|
-
class Honeybadger <
|
|
7
|
+
class Honeybadger < RailsAppGenerator::Addon
|
|
8
8
|
required_gem gem.version('honeybadger', '4.12.1', 'Make managing application errors a more pleasant experience.')
|
|
9
9
|
|
|
10
10
|
def apply
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Httparty to rails application
|
|
7
|
-
class Httparty <
|
|
7
|
+
class Httparty < RailsAppGenerator::Addon
|
|
8
8
|
required_gem gem.version('httparty', '0.20.0', 'Makes http fun! Also, makes consuming restful web services dead easy.')
|
|
9
9
|
|
|
10
10
|
def apply; end
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add LogRage - Tame Rails' multi-line logging into a single line per request
|
|
7
|
-
class Lograge <
|
|
7
|
+
class Lograge < RailsAppGenerator::Addon
|
|
8
8
|
def apply
|
|
9
9
|
template 'config/initializers/lograge.rb'
|
|
10
10
|
end
|
|
@@ -4,27 +4,10 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add MiniMagick to rails application
|
|
7
|
-
class MiniMagick <
|
|
7
|
+
class MiniMagick < RailsAppGenerator::Addon
|
|
8
8
|
required_gem gem.version('mini_magick', '4.11.0', 'Manipulate images with minimal use of memory via ImageMagick / GraphicsMagick')
|
|
9
9
|
|
|
10
|
-
def apply
|
|
11
|
-
say 'Setting up MiniMagick'
|
|
12
|
-
# template('mini_magick_template.rb', 'target/mini_magick.rb', force: true)
|
|
13
|
-
# template('app/javascript/stylesheets/components.scss')
|
|
14
|
-
# create_file('target/mini_magick.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_bundle
|
|
22
|
-
say 'Setting up MiniMagick - before bundle install'
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def after_bundle
|
|
26
|
-
say 'Setting up MiniMagick - after bundle install'
|
|
27
|
-
end
|
|
10
|
+
def apply; end
|
|
28
11
|
end
|
|
29
12
|
end
|
|
30
13
|
end
|
|
@@ -6,7 +6,7 @@ module RailsAppGenerator
|
|
|
6
6
|
# Add Pundit - Pundit provides a set of helpers which guide you in
|
|
7
7
|
# leveraging regular Ruby classes and object oriented design patterns
|
|
8
8
|
# to build a simple, robust and scalable authorization system.
|
|
9
|
-
class Pundit <
|
|
9
|
+
class Pundit < RailsAppGenerator::Addon
|
|
10
10
|
def apply
|
|
11
11
|
directory 'app/policies', 'app/policies'
|
|
12
12
|
template 'app/controllers/authorized_controller.rb.erb', 'app/controllers/authorized_controller.rb'
|
|
@@ -4,7 +4,7 @@ module RailsAppGenerator
|
|
|
4
4
|
# Custom add-ons for RailsAppGenerator
|
|
5
5
|
module AddOns
|
|
6
6
|
# Add Rails HTML Sanitizer
|
|
7
|
-
class RailsHtmlSanitizer <
|
|
7
|
+
class RailsHtmlSanitizer < RailsAppGenerator::Addon
|
|
8
8
|
required_gem gem.version('rails-html-sanitizer', '1.4.3',
|
|
9
9
|
'Rails Html Sanitizers are responsible for sanitizing HTML fragments in Rails applications, i.e. in the sanitize, sanitize_css, strip_tags and strip_links methods')
|
|
10
10
|
|
|
@@ -6,9 +6,9 @@ module RailsAppGenerator
|
|
|
6
6
|
# Add Sidekiq to rails application
|
|
7
7
|
#
|
|
8
8
|
# Sidekiq is a job server that can be used to process jobs in the background.
|
|
9
|
-
# `Sidekiq` is a subclass of `
|
|
9
|
+
# `Sidekiq` is a subclass of `Addon` that adds a `apply` method that says "setup sidekiq" and
|
|
10
10
|
# copies the `app/workers` directory from the `templates` directory to the `app` directory
|
|
11
|
-
class Sidekiq <
|
|
11
|
+
class Sidekiq < RailsAppGenerator::Addon
|
|
12
12
|
def apply
|
|
13
13
|
say 'setup sidekiq'
|
|
14
14
|
directory('app/workers', 'app/workers')
|
|
@@ -492,13 +492,6 @@ module RailsAppGenerator
|
|
|
492
492
|
end
|
|
493
493
|
end
|
|
494
494
|
|
|
495
|
-
# def apply(context = Context.new({}))
|
|
496
|
-
# instance = new(context)
|
|
497
|
-
# return unless instance.uses?
|
|
498
|
-
|
|
499
|
-
# instance.apply
|
|
500
|
-
# end
|
|
501
|
-
|
|
502
495
|
def add_if(addon)
|
|
503
496
|
add(addon) if active?(addon)
|
|
504
497
|
end
|
|
@@ -526,7 +519,7 @@ module RailsAppGenerator
|
|
|
526
519
|
def uses?(addon)
|
|
527
520
|
return false unless active?(addon)
|
|
528
521
|
|
|
529
|
-
addon =
|
|
522
|
+
addon = AddonUtil.get(addon)
|
|
530
523
|
Dependencies.new(addon, context).satisfied?
|
|
531
524
|
end
|
|
532
525
|
|
|
@@ -538,14 +531,8 @@ module RailsAppGenerator
|
|
|
538
531
|
end
|
|
539
532
|
end
|
|
540
533
|
|
|
541
|
-
def addon_classes
|
|
542
|
-
AddOns.constants
|
|
543
|
-
.map { |addon_klass_name| AddOns.const_get(addon_klass_name) }
|
|
544
|
-
.select { |klass| klass.is_a?(Class) && klass.respond_to?(:addon_name) }
|
|
545
|
-
end
|
|
546
|
-
|
|
547
534
|
def active_addon_classes
|
|
548
|
-
|
|
535
|
+
AddonUtil.classes.select { |klass| active?(klass.addon_name) }
|
|
549
536
|
end
|
|
550
537
|
|
|
551
538
|
def addon_gemfile_entries
|
|
@@ -24,8 +24,8 @@ module RailsAppGenerator
|
|
|
24
24
|
|
|
25
25
|
return true if @context.default_addons.include?(addon)
|
|
26
26
|
|
|
27
|
-
visited <<
|
|
28
|
-
dependencies =
|
|
27
|
+
visited << RailsAppGenerator::Addon
|
|
28
|
+
dependencies = AddonUtil.get(addon).dependencies - visited
|
|
29
29
|
dependencies.each do |dependency|
|
|
30
30
|
return false unless dependencies_satisfied?(dependency, visited)
|
|
31
31
|
end
|
|
@@ -13,34 +13,37 @@ module RailsAppGenerator
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
class << self
|
|
16
|
-
def
|
|
17
|
-
@
|
|
16
|
+
def class_options
|
|
17
|
+
@class_options ||= []
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def
|
|
21
|
-
@
|
|
20
|
+
def class_options_lookup
|
|
21
|
+
@class_options_lookup ||= {}
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
# Future options are placeholders for options that are not yet implemented
|
|
25
25
|
def future_option(name, **args); end
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
# Register an option with the builder, this method has the same signature as Thor.
|
|
28
|
+
#
|
|
29
|
+
# This is so options can be used interchangeably between OptionsBuilder and Thor.
|
|
30
|
+
def class_option(name, **args)
|
|
31
|
+
return if class_options_lookup.key?(name)
|
|
29
32
|
|
|
30
33
|
option = BuildOption.new(**{ name: name }.merge(args))
|
|
31
34
|
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
class_options_lookup[name] = option
|
|
36
|
+
class_options << option
|
|
34
37
|
end
|
|
35
38
|
|
|
36
39
|
def reset
|
|
37
|
-
@
|
|
38
|
-
@
|
|
40
|
+
@class_options = nil
|
|
41
|
+
@class_options_lookup = nil
|
|
39
42
|
end
|
|
40
43
|
end
|
|
41
44
|
|
|
42
45
|
def cmd_line_options
|
|
43
|
-
self.class.
|
|
46
|
+
self.class.class_options.map do |option|
|
|
44
47
|
mapper = option.mapper
|
|
45
48
|
value = options[option.name]
|
|
46
49
|
mapper.map(option.name, value)
|
|
@@ -57,35 +60,7 @@ module RailsAppGenerator
|
|
|
57
60
|
private
|
|
58
61
|
|
|
59
62
|
def default_options
|
|
60
|
-
self.class.
|
|
63
|
+
self.class.class_options.to_h { |option| [option.name, option.default] }
|
|
61
64
|
end
|
|
62
65
|
end
|
|
63
|
-
|
|
64
|
-
# opts = [
|
|
65
|
-
# "--skip-namespace",
|
|
66
|
-
# "--skip-collision-check",
|
|
67
|
-
# "--skip-git",
|
|
68
|
-
# "--skip-keeps",
|
|
69
|
-
# "--skip-action-mailer",
|
|
70
|
-
# "--skip-action-mailbox",
|
|
71
|
-
# "--skip-action-text",
|
|
72
|
-
# "--skip-active-record",
|
|
73
|
-
# "--skip-active-job",
|
|
74
|
-
# "--skip-active-storage",
|
|
75
|
-
# "--skip-action-cable",
|
|
76
|
-
# "--skip-asset-pipeline",
|
|
77
|
-
# "--skip-javascript",
|
|
78
|
-
# "--skip-hotwire",
|
|
79
|
-
# "--skip-jbuilder",
|
|
80
|
-
# "--skip-test",
|
|
81
|
-
# "--skip-system-test",
|
|
82
|
-
# "--skip-bootsnap",
|
|
83
|
-
# "--skip-bundle"
|
|
84
|
-
# ]
|
|
85
|
-
|
|
86
|
-
# opts = [
|
|
87
|
-
# "--skip-git",
|
|
88
|
-
# "--skip-test",
|
|
89
|
-
# "--skip-bundle"
|
|
90
|
-
# ]
|
|
91
66
|
end
|
|
@@ -4,9 +4,9 @@ module RailsAppGenerator
|
|
|
4
4
|
class RailsOptions < OptionsBuilder
|
|
5
5
|
# NOTE: Currently you need to register new options in two places
|
|
6
6
|
# here and in lib/rails_app_generator/app_generator.rb
|
|
7
|
-
|
|
7
|
+
class_option :template , type: :string # , desc: "Path to some #{name} template (can be a filesystem path or URL)"
|
|
8
8
|
future_option :database , type: :string , default: 'sqlite3' # , desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})"
|
|
9
|
-
|
|
9
|
+
class_option :skip_git , type: :boolean, default: false # , desc: "Skip .gitignore file"
|
|
10
10
|
future_option :skip_keeps , type: :boolean, default: false # , desc: "Skip source control .keep files"
|
|
11
11
|
future_option :skip_action_mailer , type: :boolean, default: false # , desc: "Skip Action Mailer files"
|
|
12
12
|
future_option :skip_action_mailbox , type: :boolean, default: false # , desc: "Skip Action Mailbox gem"
|
|
@@ -20,8 +20,8 @@ module RailsAppGenerator
|
|
|
20
20
|
future_option :skip_javascript , type: :boolean, default: false # name == 'plugin' # , desc: "Skip JavaScript files"
|
|
21
21
|
future_option :skip_hotwire , type: :boolean, default: false # , desc: "Skip Hotwire integration"
|
|
22
22
|
future_option :skip_jbuilder , type: :boolean, default: false # , desc: "Skip jbuilder gem"
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
class_option :skip_test , type: :boolean, default: false # , desc: "Skip test files"
|
|
24
|
+
class_option :test , type: :string , default: 'rspec' # , desc: "minitest or rspec (default: rspec)"
|
|
25
25
|
future_option :skip_system_test , type: :boolean, default: false # , desc: "Skip system test files"
|
|
26
26
|
future_option :skip_bootsnap , type: :boolean, default: false # , desc: "Skip bootsnap gem"
|
|
27
27
|
future_option :dev , type: :boolean, default: false # , desc: "Set up the #{name} with Gemfile pointing to your Rails checkout"
|
|
@@ -34,42 +34,42 @@ module RailsAppGenerator
|
|
|
34
34
|
future_option :api , type: :boolean # , desc: "Preconfigure smaller stack for API only apps"
|
|
35
35
|
future_option :minimal , type: :boolean # , desc: "Preconfigure a minimal rails app"
|
|
36
36
|
future_option :javascript , type: :string , default: 'importmap' # , desc: "Choose JavaScript approach [options: importmap (default), webpack, esbuild, rollup]"
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
class_option :css , type: :string # , desc: "Choose CSS processor [options: tailwind, bootstrap, bulma, postcss, sass... check https://github.com/rails/cssbundling-rails]"
|
|
38
|
+
class_option :skip_bundle , type: :boolean, default: false # , desc: "Don't run bundle install"
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
40
|
+
class_option :add_irbrc , type: :boolean, default: false
|
|
41
|
+
class_option :add_foreman , type: :boolean, default: false
|
|
42
|
+
class_option :add_devise , type: :boolean, default: false
|
|
43
|
+
class_option :add_dotenv , type: :boolean, default: false
|
|
44
|
+
class_option :add_docker , type: :boolean, default: false
|
|
45
|
+
class_option :add_docker_compose , type: :boolean, default: false
|
|
46
|
+
class_option :add_rubocop , type: :boolean, default: false
|
|
47
|
+
class_option :add_annotate , type: :boolean, default: false
|
|
48
|
+
class_option :add_continuous_integration , type: :boolean, default: false
|
|
49
|
+
class_option :add_high_voltage , type: :boolean, default: false
|
|
50
|
+
class_option :add_generators , type: :boolean, default: false
|
|
51
|
+
class_option :add_lograge , type: :boolean, default: false
|
|
52
|
+
class_option :add_pundit , type: :boolean, default: false
|
|
53
|
+
class_option :add_services , type: :boolean, default: false
|
|
54
|
+
class_option :add_sidekiq , type: :boolean, default: false
|
|
55
|
+
class_option :add_views , type: :boolean, default: false
|
|
56
|
+
class_option :add_errors , type: :boolean, default: false
|
|
57
|
+
class_option :add_scaffold , type: :boolean, default: false
|
|
58
|
+
class_option :add_factory_bot , type: :boolean, default: false
|
|
59
|
+
class_option :add_shoulda , type: :boolean, default: false
|
|
60
60
|
|
|
61
61
|
# NEW GEM ADDONS
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
62
|
+
class_option :add_acts_as_list , type: :boolean, default: false
|
|
63
|
+
class_option :add_browser , type: :boolean, default: false
|
|
64
|
+
class_option :add_chartkick , type: :boolean, default: false
|
|
65
|
+
class_option :add_faker , type: :boolean, default: false
|
|
66
|
+
class_option :add_groupdate , type: :boolean, default: false
|
|
67
|
+
class_option :add_hexapdf , type: :boolean, default: false
|
|
68
|
+
class_option :add_httparty , type: :boolean, default: false
|
|
69
|
+
class_option :add_honeybadger , type: :boolean, default: false
|
|
70
|
+
class_option :add_mini_magick , type: :boolean, default: false
|
|
71
|
+
class_option :add_rails_html_sanitizer , type: :boolean, default: false
|
|
72
|
+
class_option :add_twilio_ruby , type: :boolean, default: false
|
|
73
73
|
|
|
74
74
|
# if options[:minimal]
|
|
75
75
|
# self.options = options.merge(
|
data/lib/rails_app_generator.rb
CHANGED
|
@@ -25,13 +25,15 @@ require 'rails_app_generator/options/options_builder'
|
|
|
25
25
|
require 'rails_app_generator/options/rails_options'
|
|
26
26
|
require 'rails_app_generator/context'
|
|
27
27
|
require 'rails_app_generator/dependencies'
|
|
28
|
-
require 'rails_app_generator/
|
|
29
|
-
|
|
28
|
+
require 'rails_app_generator/addon'
|
|
29
|
+
require 'rails_app_generator/addon_util'
|
|
30
30
|
require 'rails_app_generator/formatted_gem_entry'
|
|
31
31
|
require 'rails_app_generator/app_builder'
|
|
32
32
|
require 'rails_app_generator/app_generator'
|
|
33
33
|
require 'rails_app_generator/starter'
|
|
34
34
|
|
|
35
|
+
Dir[File.join(__dir__, 'rails_app_generator', 'addons', '*.rb')].sort.each { |file| require file }
|
|
36
|
+
|
|
35
37
|
module RailsAppGenerator
|
|
36
38
|
# raise RailsAppGenerator::Error, 'Sample message'
|
|
37
39
|
Error = Class.new(StandardError)
|
data/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rails_app_generator",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.28",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "rails_app_generator",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.28",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"daisyui": "^2.20.0"
|
|
12
12
|
},
|
data/package.json
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"args": {
|
|
3
|
+
"app_path": "mini_magick",
|
|
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/mini_magick/_.rb",
|
|
10
|
+
"add_mini_magick": true
|
|
11
|
+
}
|
|
12
|
+
}
|
data/tasks/addon.thor
CHANGED
|
@@ -6,8 +6,8 @@ require 'net/http'
|
|
|
6
6
|
require 'json'
|
|
7
7
|
require_relative 'gem_info'
|
|
8
8
|
|
|
9
|
-
# Thor task to create a new
|
|
10
|
-
class
|
|
9
|
+
# Thor task to create a new Addon for Rails App Generator
|
|
10
|
+
class Addon < Thor
|
|
11
11
|
include Thor::Actions
|
|
12
12
|
|
|
13
13
|
source_root(File.expand_path('../templates/thor_task', File.dirname(__FILE__)))
|
|
@@ -27,9 +27,9 @@ class AddOn < Thor
|
|
|
27
27
|
|
|
28
28
|
# method_option :from, :required => true
|
|
29
29
|
desc 'new', 'Create a new Addon for Rails App Generator'
|
|
30
|
-
method_option :gem , type: :string, default: nil, desc: 'Add required_gem helper to the
|
|
30
|
+
method_option :gem , type: :string, default: nil, desc: 'Add required_gem helper to the Addon. Gem name is looked up to find version and description'
|
|
31
31
|
method_option :force, type: :boolean, default: false, desc: 'Overwrite existing files'
|
|
32
|
-
method_option :depends_on, type: :string, desc: 'This
|
|
32
|
+
method_option :depends_on, type: :string, desc: 'This Addon depends on another Addon/Gem. active_record is a common dependency'
|
|
33
33
|
def new(name)
|
|
34
34
|
self.name = snake(name)
|
|
35
35
|
self.data = build_data
|
|
@@ -11,7 +11,7 @@ module RailsAppGenerator
|
|
|
11
11
|
# Custom add-ons for RailsAppGenerator
|
|
12
12
|
module AddOns
|
|
13
13
|
# Add <%= data.name_camel %> to rails application
|
|
14
|
-
class <%= data.name_camel %> <
|
|
14
|
+
class <%= data.name_camel %> < RailsAppGenerator::Addon
|
|
15
15
|
<%= data.addon_config_code %>
|
|
16
16
|
def apply
|
|
17
17
|
say 'Setting up <%= data.name_camel %>'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rails_app_generator
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.28
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Cruwys
|
|
@@ -218,6 +218,16 @@ files:
|
|
|
218
218
|
- after_templates/addons/httparty/app/views/layouts/_footer.html.erb
|
|
219
219
|
- after_templates/addons/httparty/app/views/layouts/_navbar.html.erb
|
|
220
220
|
- after_templates/addons/httparty/app/views/layouts/application.html.erb
|
|
221
|
+
- after_templates/addons/mini_magick/_.rb
|
|
222
|
+
- after_templates/addons/mini_magick/app/assets/images/cat1.jpg
|
|
223
|
+
- after_templates/addons/mini_magick/app/assets/images/cat2.jpg
|
|
224
|
+
- after_templates/addons/mini_magick/app/assets/images/cat3.jpg
|
|
225
|
+
- after_templates/addons/mini_magick/app/controllers/home_controller.rb
|
|
226
|
+
- after_templates/addons/mini_magick/app/views/home/index.html.erb
|
|
227
|
+
- after_templates/addons/mini_magick/app/views/layouts/_alerts.html.erb
|
|
228
|
+
- after_templates/addons/mini_magick/app/views/layouts/_footer.html.erb
|
|
229
|
+
- after_templates/addons/mini_magick/app/views/layouts/_navbar.html.erb
|
|
230
|
+
- after_templates/addons/mini_magick/app/views/layouts/application.html.erb
|
|
221
231
|
- after_templates/addons/rails_html_sanitizer/_.rb
|
|
222
232
|
- after_templates/addons/rails_html_sanitizer/home/index.html.erb
|
|
223
233
|
- after_templates/addons/twilio_ruby/_.rb
|
|
@@ -355,7 +365,8 @@ files:
|
|
|
355
365
|
- docs/videos.md
|
|
356
366
|
- exe/rag
|
|
357
367
|
- lib/rails_app_generator.rb
|
|
358
|
-
- lib/rails_app_generator/
|
|
368
|
+
- lib/rails_app_generator/addon.rb
|
|
369
|
+
- lib/rails_app_generator/addon_util.rb
|
|
359
370
|
- lib/rails_app_generator/addons/acts_as_list.rb
|
|
360
371
|
- lib/rails_app_generator/addons/annotate.rb
|
|
361
372
|
- lib/rails_app_generator/addons/browser.rb
|
|
@@ -389,7 +400,6 @@ files:
|
|
|
389
400
|
- lib/rails_app_generator/addons/stimulus_components.rb
|
|
390
401
|
- lib/rails_app_generator/addons/tailwind.rb
|
|
391
402
|
- lib/rails_app_generator/addons/views.rb
|
|
392
|
-
- lib/rails_app_generator/addons/xmen.rb
|
|
393
403
|
- lib/rails_app_generator/app_builder.rb
|
|
394
404
|
- lib/rails_app_generator/app_generator.rb
|
|
395
405
|
- lib/rails_app_generator/cli/diff.rb
|
|
@@ -402,9 +412,6 @@ files:
|
|
|
402
412
|
- lib/rails_app_generator/diff/processor.rb
|
|
403
413
|
- lib/rails_app_generator/diff/report.rb
|
|
404
414
|
- lib/rails_app_generator/formatted_gem_entry.rb
|
|
405
|
-
- lib/rails_app_generator/generators/advisories_generator.rb
|
|
406
|
-
- lib/rails_app_generator/generators/base.rb
|
|
407
|
-
- lib/rails_app_generator/generators/foo_generator.rb
|
|
408
415
|
- lib/rails_app_generator/notes/commands-list.txt
|
|
409
416
|
- lib/rails_app_generator/notes/methods-class.txt
|
|
410
417
|
- lib/rails_app_generator/notes/methods-instance.txt
|
|
@@ -431,6 +438,7 @@ files:
|
|
|
431
438
|
- profiles/addons/hexapdf.json
|
|
432
439
|
- profiles/addons/honeybadger.json
|
|
433
440
|
- profiles/addons/httparty.json
|
|
441
|
+
- profiles/addons/mini_magick.json
|
|
434
442
|
- profiles/addons/rails-html-sanitizer.json
|
|
435
443
|
- profiles/addons/twilio_ruby.json
|
|
436
444
|
- profiles/rag-add-some-pages.json
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module RailsAppGenerator
|
|
4
|
-
# Custom add-ons for RailsAppGenerator
|
|
5
|
-
module AddOns
|
|
6
|
-
# Add Xmen to rails application
|
|
7
|
-
class Xmen < AddOn
|
|
8
|
-
# depends_on :active_record
|
|
9
|
-
|
|
10
|
-
# required_gem gem.version('annotate', '3.2.0', 'Annotates Rails/ActiveRecord Models, routes, fixtures, and others based on the database schema.')
|
|
11
|
-
|
|
12
|
-
def apply
|
|
13
|
-
template('auto_annotate_models.rake', 'lib/tasks/auto_annotate_models.rake', force: true)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
|
|
5
|
-
module RailsAppGenerator
|
|
6
|
-
# xxxx
|
|
7
|
-
class AdvisoriesGenerator < Generators::Base
|
|
8
|
-
def bundler_audit_gem
|
|
9
|
-
gem 'bundler-audit', '>= 0.7.0', require: false, group: %i[development test]
|
|
10
|
-
Bundler.with_unbundled_env { run 'bundle install' }
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def rake_task
|
|
14
|
-
copy_file 'bundler_audit.rake', 'lib/tasks/bundler_audit.rake'
|
|
15
|
-
append_file 'Rakefile', %(\ntask default: "bundle:audit"\n)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# require "rails/generators"
|
|
4
|
-
# require_relative "../actions"
|
|
5
|
-
|
|
6
|
-
module RailsAppGenerator
|
|
7
|
-
module Generators
|
|
8
|
-
class Base < Rails::Generators::Base
|
|
9
|
-
# include Suspenders::Actions
|
|
10
|
-
# include ExitOnFailure
|
|
11
|
-
|
|
12
|
-
# def self.default_source_root
|
|
13
|
-
# File.expand_path(File.join("..", "..", "..", "templates"), __dir__)
|
|
14
|
-
# end
|
|
15
|
-
|
|
16
|
-
# def self.inherited(subclass)
|
|
17
|
-
# super
|
|
18
|
-
|
|
19
|
-
# description_file = File.expand_path(
|
|
20
|
-
# File.join(
|
|
21
|
-
# default_source_root,
|
|
22
|
-
# "descriptions",
|
|
23
|
-
# "#{subclass.generator_name}.md"
|
|
24
|
-
# )
|
|
25
|
-
# )
|
|
26
|
-
|
|
27
|
-
# subclass.desc File.read(description_file)
|
|
28
|
-
# rescue Errno::ENOENT
|
|
29
|
-
# end
|
|
30
|
-
|
|
31
|
-
# def app_name
|
|
32
|
-
# Rails.app_class.module_parent_name.demodulize.underscore.dasherize
|
|
33
|
-
# end
|
|
34
|
-
|
|
35
|
-
# def empty_directory_with_keep_file(destination)
|
|
36
|
-
# empty_directory(destination, {})
|
|
37
|
-
# keep_file(destination)
|
|
38
|
-
# end
|
|
39
|
-
|
|
40
|
-
# def keep_file(destination)
|
|
41
|
-
# create_file(File.join(destination, ".keep"))
|
|
42
|
-
# end
|
|
43
|
-
|
|
44
|
-
# def append_template_to_file(destination, source, *args)
|
|
45
|
-
# partial = File.expand_path(find_in_source_paths(source))
|
|
46
|
-
# append_to_file(destination, File.read(partial, *args))
|
|
47
|
-
# end
|
|
48
|
-
|
|
49
|
-
# def prepend_template_to_file(destination, source, *args)
|
|
50
|
-
# partial = File.expand_path(find_in_source_paths(source))
|
|
51
|
-
# prepend_to_file(destination, File.read(partial, *args))
|
|
52
|
-
# end
|
|
53
|
-
|
|
54
|
-
# def inject_template_into_file(destination, source, *args)
|
|
55
|
-
# partial = File.expand_path(find_in_source_paths(source))
|
|
56
|
-
# inject_into_file(destination, File.read(partial), *args)
|
|
57
|
-
# end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
|
|
5
|
-
# Some comment
|
|
6
|
-
module RailsAppGenerator
|
|
7
|
-
# xxx
|
|
8
|
-
class FooGenerator < Generators::Base
|
|
9
|
-
def bundler_audit_gem
|
|
10
|
-
puts '11111111111'
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def rake_task
|
|
14
|
-
puts '22222222222'
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|