rails_app_generator 0.1.25 → 0.1.28

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