Class: Railspress::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Railspress::Generators::InstallGenerator
- Defined in:
- lib/generators/railspress/install/install_generator.rb
Instance Method Summary collapse
- #configure_importmap ⇒ Object
- #copy_action_text_migrations ⇒ Object
- #copy_active_storage_migrations ⇒ Object
- #copy_railspress_migrations ⇒ Object
- #detect_install_mode ⇒ Object
- #generate_initializer ⇒ Object
- #mount_engine ⇒ Object
- #show_post_install_message ⇒ Object
Instance Method Details
#configure_importmap ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/generators/railspress/install/install_generator.rb', line 50 def configure_importmap return unless importmap_available? importmap_file = Rails.root.join("config", "importmap.rb") importmap_content = File.read(importmap_file) # Pin ActiveStorage (required for ActionText attachments) unless importmap_content.include?("@rails/activestorage") append_to_file importmap_file, <<~RUBY # ActiveStorage for file uploads pin "@rails/activestorage", to: "activestorage.esm.js" RUBY say_status :pinned, "@rails/activestorage in importmap", :green end # Lexxy is auto-pinned by the engine's importmap — no host app pin needed end |
#copy_action_text_migrations ⇒ Object
21 22 23 24 25 26 27 28 |
# File 'lib/generators/railspress/install/install_generator.rb', line 21 def copy_action_text_migrations if action_text_migration_exists? say_status :skip, "ActionText migrations already exist", :yellow else say_status :create, "ActionText migrations", :green run "bundle exec rake railties:install:migrations FROM=action_text" end end |
#copy_active_storage_migrations ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/generators/railspress/install/install_generator.rb', line 30 def copy_active_storage_migrations if active_storage_migration_exists? say_status :skip, "ActiveStorage migrations already exist", :yellow else say_status :create, "ActiveStorage migrations", :green run "bundle exec rake railties:install:migrations FROM=active_storage" end end |
#copy_railspress_migrations ⇒ Object
17 18 19 |
# File 'lib/generators/railspress/install/install_generator.rb', line 17 def copy_railspress_migrations run "bundle exec rake railspress:install:migrations" end |
#detect_install_mode ⇒ Object
13 14 15 |
# File 'lib/generators/railspress/install/install_generator.rb', line 13 def detect_install_mode @upgrading_existing_install = existing_railspress_installation? end |
#generate_initializer ⇒ Object
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/generators/railspress/install/install_generator.rb', line 69 def generate_initializer initializer_path = Rails.root.join("config", "initializers", "railspress.rb") if File.exist?(initializer_path) say_status :skip, "config/initializers/railspress.rb already exists", :yellow else template "initializer.rb", initializer_path say_status :created, "config/initializers/railspress.rb", :green end end |
#mount_engine ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/generators/railspress/install/install_generator.rb', line 39 def mount_engine route_content = 'mount Railspress::Engine => "/railspress"' if File.read(rails_route_file).include?("Railspress::Engine") say_status :skip, "RailsPress engine already mounted", :yellow else route route_content say_status :mounted, "RailsPress engine at /railspress", :green end end |
#show_post_install_message ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/generators/railspress/install/install_generator.rb', line 80 def upgrading = !!@upgrading_existing_install say "" say "=" * 60, :green say(" RailsPress #{upgrading ? "upgrade setup completed!" : "installed successfully!"}", :green) say "=" * 60, :green say "" say(upgrading ? "Upgrade next steps:" : "Next steps:", :yellow) say "" if upgrading say " 1. Review upgrade notes:" say " docs/UPGRADING.md", :cyan say "" say " 2. Run migrations:" say " $ rails db:migrate", :cyan say "" say " 3. Verify your JS integration if using host-page features:" say ' app/javascript/application.js includes: import "railspress"', :cyan else say " 1. Run migrations:" say " $ rails db:migrate", :cyan say "" say " 2. Access the admin dashboard:" say " http://localhost:3000/railspress/admin", :cyan say "" say " 3. (Optional) Change the mount path in config/routes.rb:" say ' mount Railspress::Engine => "/blog"', :cyan end say "" say "Optional features:", :yellow say " Edit config/initializers/railspress.rb to enable:" say " - CMS content elements (config.enable_cms)" say " - Inline CMS editing (config.inline_editing_check)" say " See docs/CONFIGURING.md and docs/INLINE_EDITING.md for details." say "" say "Full guides & documentation:", :yellow say " https://railspress.org", :cyan say "" say "=" * 60, :green end |