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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/after_templates/addons/mini_magick/_.rb +28 -0
  4. data/after_templates/addons/mini_magick/app/assets/images/cat1.jpg +0 -0
  5. data/after_templates/addons/mini_magick/app/assets/images/cat2.jpg +0 -0
  6. data/after_templates/addons/mini_magick/app/assets/images/cat3.jpg +0 -0
  7. data/after_templates/addons/mini_magick/app/controllers/home_controller.rb +43 -0
  8. data/after_templates/addons/mini_magick/app/views/home/index.html.erb +25 -0
  9. data/after_templates/addons/mini_magick/app/views/layouts/_alerts.html.erb +2 -0
  10. data/after_templates/addons/mini_magick/app/views/layouts/_footer.html.erb +3 -0
  11. data/after_templates/addons/mini_magick/app/views/layouts/_navbar.html.erb +2 -0
  12. data/after_templates/addons/mini_magick/app/views/layouts/application.html.erb +28 -0
  13. data/lib/rails_app_generator/{add_on.rb → addon.rb} +3 -26
  14. data/lib/rails_app_generator/addon_util.rb +21 -0
  15. data/lib/rails_app_generator/addons/acts_as_list.rb +1 -1
  16. data/lib/rails_app_generator/addons/annotate.rb +1 -1
  17. data/lib/rails_app_generator/addons/browser.rb +1 -1
  18. data/lib/rails_app_generator/addons/chartkick.rb +1 -1
  19. data/lib/rails_app_generator/addons/continuous_integration.rb +1 -1
  20. data/lib/rails_app_generator/addons/devise.rb +1 -1
  21. data/lib/rails_app_generator/addons/docker.rb +1 -1
  22. data/lib/rails_app_generator/addons/docker_compose.rb +1 -1
  23. data/lib/rails_app_generator/addons/dotenv.rb +1 -1
  24. data/lib/rails_app_generator/addons/factory_bot.rb +1 -1
  25. data/lib/rails_app_generator/addons/faker.rb +1 -1
  26. data/lib/rails_app_generator/addons/foreman.rb +1 -1
  27. data/lib/rails_app_generator/addons/generators.rb +1 -1
  28. data/lib/rails_app_generator/addons/groupdate.rb +1 -1
  29. data/lib/rails_app_generator/addons/hexapdf.rb +1 -1
  30. data/lib/rails_app_generator/addons/high_voltage.rb +1 -1
  31. data/lib/rails_app_generator/addons/honeybadger.rb +1 -1
  32. data/lib/rails_app_generator/addons/httparty.rb +1 -1
  33. data/lib/rails_app_generator/addons/inline_svg.rb +1 -1
  34. data/lib/rails_app_generator/addons/irbrc.rb +1 -1
  35. data/lib/rails_app_generator/addons/lograge.rb +1 -1
  36. data/lib/rails_app_generator/addons/mini_magick.rb +2 -19
  37. data/lib/rails_app_generator/addons/pundit.rb +1 -1
  38. data/lib/rails_app_generator/addons/rails_html_sanitizer.rb +1 -1
  39. data/lib/rails_app_generator/addons/rspec.rb +1 -1
  40. data/lib/rails_app_generator/addons/rubocop.rb +1 -1
  41. data/lib/rails_app_generator/addons/scaffold.rb +1 -1
  42. data/lib/rails_app_generator/addons/services.rb +1 -1
  43. data/lib/rails_app_generator/addons/sidekiq.rb +2 -2
  44. data/lib/rails_app_generator/addons/stimulus.rb +1 -1
  45. data/lib/rails_app_generator/addons/stimulus_components.rb +1 -1
  46. data/lib/rails_app_generator/addons/tailwind.rb +1 -1
  47. data/lib/rails_app_generator/addons/views.rb +1 -1
  48. data/lib/rails_app_generator/app_generator.rb +2 -15
  49. data/lib/rails_app_generator/context.rb +1 -1
  50. data/lib/rails_app_generator/dependencies.rb +2 -2
  51. data/lib/rails_app_generator/options/options_builder.rb +15 -40
  52. data/lib/rails_app_generator/options/rails_options.rb +37 -37
  53. data/lib/rails_app_generator/version.rb +1 -1
  54. data/lib/rails_app_generator.rb +4 -2
  55. data/package-lock.json +2 -2
  56. data/package.json +1 -1
  57. data/profiles/addons/mini_magick.json +12 -0
  58. data/tasks/addon.thor +4 -4
  59. data/templates/thor_task/addon/addon.tt +1 -1
  60. metadata +14 -6
  61. data/lib/rails_app_generator/addons/xmen.rb +0 -17
  62. data/lib/rails_app_generator/generators/advisories_generator.rb +0 -18
  63. data/lib/rails_app_generator/generators/base.rb +0 -60
  64. 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: 8402636b2b1998543616a2cd272805b60b2f2376ccf9d0820d2763b92f204b8d
4
- data.tar.gz: 3708271f45646622588ab76a546f685e0227c6eaa0c8bf4e8f7f17d98ee2e844
3
+ metadata.gz: b5005b34988e8bf214b22d0f09e109ec5df50c29dfac7c677586ecf7b53c112d
4
+ data.tar.gz: 1a2e5b7f16bb4f98d401ed8d475373925b4f72c50e67f38c51d53272989ab74c
5
5
  SHA512:
6
- metadata.gz: 225821de9ffbc1335ebbac6b5dd916257b3e4f5b26da84d67b79d331df4bf93d9f2b6f6524c81c55c9f8dda9bd57e96db29bb6d220eac0aacdd3574a9070fe38
7
- data.tar.gz: 8e60366f1eacf5aabf9f34a44cac3d078818e314c9dda1576325942468ec922322f072a4ade15ec569b1a09868ffdec57d4c365b653528b4469c84c4236b807f
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'
@@ -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,2 @@
1
+ <% flash.each do |type, msg| %><div class="<%= type %>"><%= msg %></div><% end %>
2
+ <% if flash.any? %><hr /><% end %>
@@ -0,0 +1,3 @@
1
+ <footer>
2
+ <hr />
3
+ </footer>
@@ -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
- # XXXX
5
- class AddOn < Rails::Generators::Base
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 : self.class.get(addon_name)
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 < AddOn
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 < AddOn
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 < AddOn
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 < AddOn
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 < AddOn
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 < AddOn
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 < AddOn
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 < AddOn
7
+ class DockerCompose < RailsAppGenerator::Addon
8
8
  def apply
9
9
  template 'docker-compose.yml.erb', 'docker-compose.yml'
10
10
  end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add DotEnv to rails application
7
- class Dotenv < AddOn
7
+ class Dotenv < RailsAppGenerator::Addon
8
8
  def apply
9
9
  template '.env.development.erb', '.env.development'
10
10
  end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add FactoryBot to rails application
7
- class FactoryBot < AddOn
7
+ class FactoryBot < RailsAppGenerator::Addon
8
8
  depends_on :active_record, :test
9
9
 
10
10
  def apply
@@ -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 < AddOn
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 < AddOn
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 < AddOn
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 < AddOn
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 < AddOn
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 High Voltage rails engine for static pages.
7
- class HighVoltage < AddOn
7
+ class HighVoltage < RailsAppGenerator::Addon
8
8
  depends_on :views
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 Honeybadger to rails application
7
- class Honeybadger < AddOn
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 < AddOn
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 InlineSvg support to rails application
7
- class InlineSvg < AddOn
7
+ class InlineSvg < RailsAppGenerator::Addon
8
8
  depends_on :views
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add IrbRc to rails application
7
- class Irbrc < RailsAppGenerator::AddOn
7
+ class Irbrc < RailsAppGenerator::Addon
8
8
  def apply
9
9
  template '.irbrc.erb', '.irbrc'
10
10
  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 < AddOn
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 < AddOn
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 < AddOn
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 < AddOn
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
 
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add RSpec unit testing support to rails application
7
- class Rspec < AddOn
7
+ class Rspec < RailsAppGenerator::Addon
8
8
  depends_on :test
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 Rubocop to rails application
7
- class Rubocop < AddOn
7
+ class Rubocop < RailsAppGenerator::Addon
8
8
  def apply
9
9
  template '.rubocop.yml.erb', '.rubocop.yml'
10
10
  end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Tailwind CSS support to rails application
7
- class Scaffold < AddOn
7
+ class Scaffold < RailsAppGenerator::Addon
8
8
  depends_on :tailwind
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 DotEnv to rails application
7
- class Services < AddOn
7
+ class Services < RailsAppGenerator::Addon
8
8
  def apply
9
9
  directory 'app/services', 'app/services'
10
10
  end
@@ -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 `AddOn` that adds a `apply` method that says "setup sidekiq" and
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 < AddOn
11
+ class Sidekiq < RailsAppGenerator::Addon
12
12
  def apply
13
13
  say 'setup sidekiq'
14
14
  directory('app/workers', 'app/workers')
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Stimulus components
7
- class Stimulus < AddOn
7
+ class Stimulus < RailsAppGenerator::Addon
8
8
  depends_on :javascript
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
  # Stimulus components
7
- class StimulusComponents < AddOn
7
+ class StimulusComponents < RailsAppGenerator::Addon
8
8
  depends_on :stimulus
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 Tailwind CSS support to rails application
7
- class Tailwind < AddOn
7
+ class Tailwind < RailsAppGenerator::Addon
8
8
  depends_on :javascript
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 default rails views
7
- class Views < AddOn
7
+ class Views < RailsAppGenerator::Addon
8
8
  depends_on :tailwind
9
9
 
10
10
  def apply
@@ -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 = AddOn.get(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
- addon_classes.select { |klass| active?(klass.addon_name) }
535
+ AddonUtil.classes.select { |klass| active?(klass.addon_name) }
549
536
  end
550
537
 
551
538
  def addon_gemfile_entries
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- # Context passes
4
+ # Context stores the template folder and options
5
5
  class Context
6
6
  attr_reader :rails_template_path
7
7
  attr_reader :rails_override_template_path
@@ -24,8 +24,8 @@ module RailsAppGenerator
24
24
 
25
25
  return true if @context.default_addons.include?(addon)
26
26
 
27
- visited << addon
28
- dependencies = AddOn.get(addon).dependencies - visited
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 registered_options
17
- @registered_options ||= []
16
+ def class_options
17
+ @class_options ||= []
18
18
  end
19
19
 
20
- def registered_options_lookup
21
- @registered_options_lookup ||= {}
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
- def register_option(name, **args)
28
- return if registered_options_lookup.key?(name)
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
- registered_options_lookup[name] = option
33
- registered_options << option
35
+ class_options_lookup[name] = option
36
+ class_options << option
34
37
  end
35
38
 
36
39
  def reset
37
- @registered_options = nil
38
- @registered_options_lookup = nil
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.registered_options.map do |option|
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.registered_options.to_h { |option| [option.name, option.default] }
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
- register_option :template , type: :string # , desc: "Path to some #{name} template (can be a filesystem path or URL)"
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
- register_option :skip_git , type: :boolean, default: false # , desc: "Skip .gitignore file"
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
- register_option :skip_test , type: :boolean, default: false # , desc: "Skip test files"
24
- register_option :test , type: :string , default: 'rspec' # , desc: "minitest or rspec (default: rspec)"
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
- register_option :css , type: :string # , desc: "Choose CSS processor [options: tailwind, bootstrap, bulma, postcss, sass... check https://github.com/rails/cssbundling-rails]"
38
- register_option :skip_bundle , type: :boolean, default: false # , desc: "Don't run bundle install"
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
- register_option :add_irbrc , type: :boolean, default: false
41
- register_option :add_foreman , type: :boolean, default: false
42
- register_option :add_devise , type: :boolean, default: false
43
- register_option :add_dotenv , type: :boolean, default: false
44
- register_option :add_docker , type: :boolean, default: false
45
- register_option :add_docker_compose , type: :boolean, default: false
46
- register_option :add_rubocop , type: :boolean, default: false
47
- register_option :add_annotate , type: :boolean, default: false
48
- register_option :add_continuous_integration , type: :boolean, default: false
49
- register_option :add_high_voltage , type: :boolean, default: false
50
- register_option :add_generators , type: :boolean, default: false
51
- register_option :add_lograge , type: :boolean, default: false
52
- register_option :add_pundit , type: :boolean, default: false
53
- register_option :add_services , type: :boolean, default: false
54
- register_option :add_sidekiq , type: :boolean, default: false
55
- register_option :add_views , type: :boolean, default: false
56
- register_option :add_errors , type: :boolean, default: false
57
- register_option :add_scaffold , type: :boolean, default: false
58
- register_option :add_factory_bot , type: :boolean, default: false
59
- register_option :add_shoulda , type: :boolean, default: false
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
- register_option :add_acts_as_list , type: :boolean, default: false
63
- register_option :add_browser , type: :boolean, default: false
64
- register_option :add_chartkick , type: :boolean, default: false
65
- register_option :add_faker , type: :boolean, default: false
66
- register_option :add_groupdate , type: :boolean, default: false
67
- register_option :add_hexapdf , type: :boolean, default: false
68
- register_option :add_httparty , type: :boolean, default: false
69
- register_option :add_honeybadger , type: :boolean, default: false
70
- register_option :add_mini_magick , type: :boolean, default: false
71
- register_option :add_rails_html_sanitizer , type: :boolean, default: false
72
- register_option :add_twilio_ruby , type: :boolean, default: false
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(
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.1.25'
4
+ VERSION = '0.1.28'
5
5
  end
@@ -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/add_on'
29
- Dir[File.join(__dir__, 'rails_app_generator', 'addons', '*.rb')].sort.each { |file| require file }
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.25",
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.25",
9
+ "version": "0.1.28",
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.1.25",
3
+ "version": "0.1.28",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -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 AddOn for Rails App Generator
10
- class AddOn < Thor
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 AddOn. Gem name is looked up to find version and description'
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 AddOn depends on another AddOn/Gem. active_record is a common dependency'
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 %> < AddOn
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.25
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/add_on.rb
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