Class: ActionText::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- ActionText::Generators::InstallGenerator
- Defined in:
- lib/generators/action_text/install/install_generator.rb
Instance Method Summary collapse
- #append_javascript_dependencies ⇒ Object
- #create_actiontext_files ⇒ Object
- #create_migrations ⇒ Object
- #enable_image_processing_gem ⇒ Object
- #install_javascript_dependencies ⇒ Object
- #using_bun? ⇒ Boolean
- #using_js_runtime? ⇒ Boolean
- #using_node? ⇒ Boolean
Instance Method Details
#append_javascript_dependencies ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/generators/action_text/install/install_generator.rb', line 22 def append_javascript_dependencies destination = Pathname(destination_root) if (application_javascript_path = destination.join("app/javascript/application.js")).exist? insert_into_file application_javascript_path.to_s, %(\nimport "trix"\nimport "@rails/actiontext"\n) else say <<~INSTRUCTIONS, :green You must import the @rails/actiontext and trix JavaScript modules in your application entrypoint. INSTRUCTIONS end if (importmap_path = destination.join("config/importmap.rb")).exist? append_to_file importmap_path.to_s, %(pin "trix"\npin "@rails/actiontext", to: "actiontext.esm.js"\n) end end |
#create_actiontext_files ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/generators/action_text/install/install_generator.rb', line 38 def create_actiontext_files destination = Pathname(destination_root) template "actiontext.css", "app/assets/stylesheets/actiontext.css" unless destination.join("app/assets/application.css").exist? if (stylesheets = Dir.glob "#{destination_root}/app/assets/stylesheets/application.*.{scss,css}").length > 0 insert_into_file stylesheets.first.to_s, %(@import 'actiontext.css';) else say <<~INSTRUCTIONS, :green To use the Trix editor, you must require 'app/assets/stylesheets/actiontext.css' in your base stylesheet. INSTRUCTIONS end end gem_root = "#{__dir__}/../../../.." copy_file "#{gem_root}/app/views/active_storage/blobs/_blob.html.erb", "app/views/active_storage/blobs/_blob.html.erb" copy_file "#{gem_root}/app/views/layouts/action_text/contents/_content.html.erb", "app/views/layouts/action_text/contents/_content.html.erb" end |
#create_migrations ⇒ Object
74 75 76 |
# File 'lib/generators/action_text/install/install_generator.rb', line 74 def create_migrations rails_command "railties:install:migrations FROM=active_storage,action_text", inline: true end |
#enable_image_processing_gem ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/generators/action_text/install/install_generator.rb', line 62 def enable_image_processing_gem if (gemfile_path = Pathname(destination_root).join("Gemfile")).exist? say "Ensure image_processing gem has been enabled so image uploads will work (remember to bundle!)" image_processing_regex = /gem ["']image_processing["']/ if File.readlines(gemfile_path).grep(image_processing_regex).any? uncomment_lines gemfile_path, image_processing_regex else run "bundle add --skip-install image_processing" end end end |
#install_javascript_dependencies ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/generators/action_text/install/install_generator.rb', line 13 def install_javascript_dependencies say "Installing JavaScript dependencies", :green if using_bun? run "bun add @rails/actiontext trix" elsif using_node? run "yarn add @rails/actiontext trix" end end |
#using_bun? ⇒ Boolean
82 83 84 85 86 |
# File 'lib/generators/action_text/install/install_generator.rb', line 82 def using_bun? # Cannot assume yarn.lock has been generated yet so we look for a file known to # be generated by the jsbundling-rails gem @using_bun ||= using_js_runtime? && Pathname(destination_root).join("bun.config.js").exist? end |
#using_js_runtime? ⇒ Boolean
78 79 80 |
# File 'lib/generators/action_text/install/install_generator.rb', line 78 def using_js_runtime? @using_js_runtime ||= Pathname(destination_root).join("package.json").exist? end |
#using_node? ⇒ Boolean
88 89 90 91 |
# File 'lib/generators/action_text/install/install_generator.rb', line 88 def using_node? # Bun is the only runtime that _isn't_ node. @using_node ||= using_js_runtime? && !Pathname(destination_root).join("bun.config.js").exist? end |