Class: Railspress::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/railspress/install/install_generator.rb

Instance Method Summary collapse

Instance Method Details

#configure_importmapObject



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_migrationsObject



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_migrationsObject



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_migrationsObject



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_modeObject



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_initializerObject



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_engineObject



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_messageObject



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 show_post_install_message
  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